Modül Kurulum Kancaları

1.7k görüntülenme Markdown

Modül kurma, etkinleştirme, silme ve kuyruk müdahalesinin dokuz kancası.

Genel Bakış

Bir modülün yolu dört adımdır: yüklenir, etkinleştirilir, kapatılır, silinir. Her adımın önünde durdurabileceğiniz bir kapı, arkasında haber veren bir olay bulunur.

İki şekil farkı vardır. Etkinleştirme kancaları liste alır, çünkü panelde çoklu seçim yapılabilir; silme kancaları tek modülle çalışır.

Referans

Modül etkinleştirmeyi durdurma

gatemodule.activate
AdminModules liste gelir

Bir ya da birkaç modül etkinleştirilmeden önce çalışır. Panelde çoklu seçim yapılabildiği için elinize liste gelir.

Parametreler 2
$groupstringModül tipi: posta, kısa mesaj, ödeme ya da ürün.
$modulesarrayBu istekte etkinleştirilen modüllerin anahtarları. Tek modül seçilse de dizidir; hepsini gezin.
Dönüş 1
mixedDolu bir dönüş engeller: metin ya da ileti taşıyan bir dizi olabilir, ikisi de kabul edilir ve mesaj kullanıcıya gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:module.activate', 10, function ($group, $modules) {
    // Tek modul secilse bile dizidir.
    foreach ($modules as $key)
        if (!Acme::licensed($group, $key)) return 'Bu modul icin lisansiniz yok: ' . $key;

    return null;
});

Modül etkinleşmesini izleme

actionmodule.activated
AdminModules liste gelir

Modüller etkinleştirildikten sonra çalışır.

Parametreler 2
$groupstringModül tipi.
$modulesarrayEtkinleşen modüllerin anahtarları.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:module.activated', 10, function ($group, $modules) {
    foreach ($modules as $key) Acme::onModuleOn($group, $key);
});

Modül devre dışı kalmasını izleme

actionmodule.deactivated
AdminModules liste gelir

Modüller devre dışı bırakıldıktan sonra çalışır. Kapatılan bir ödeme ya da sunucu modülü arkasında çalışan hizmetler bırakabilir.

Parametreler 2
$groupstringModül tipi.
$modulesarrayDevre dışı bırakılan modüllerin anahtarları.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:module.deactivated', 10, function ($group, $modules) {
    // Kapali modulun arkasinda calisan hizmet kalmis olabilir.
    foreach ($modules as $key) Acme::warnOrphans($group, $key);
});

Modül silmeyi durdurma

gatemodule.delete
AdminModules tek modül

Bir modül dosyalarıyla birlikte silinmeden önce çalışır. Etkinleştirmenin aksine burada tek modül vardır.

Parametreler 2
$typestringModülün tipi.
$keystringModülün anahtarı.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:module.delete', 10, function ($type, $key) {
    // Uzerinde hizmet duran modul silinmesin.
    if (Acme::hasLiveServices($type, $key)) return 'Bu modulde calisan hizmetler var.';

    return null;
});

Modül silinmesini izleme

actionmodule.deleted
AdminModules silme sonrası

Bir modül silindikten sonra çalışır. Dosyaları artık diskte değildir.

Parametreler 2
$typestringSilinen modülün tipi.
$keystringSilinen modülün anahtarı.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:module.deleted', 10, function ($type, $key) {
    Acme::forgetModule($type, $key);
});

Eklenti yüklemesini durdurma

gatemodule.addon_install
AdminModules yüklenen dosya

Yüklenen eklenti paketi açılmadan önce çalışır. Elinizdeki, henüz geçici dizinde duran ham dosyadır.

Parametreler 2
$filearrayYüklenen dosyanın bilgisi: adı, geçici yolu ve boyutu. Dosya adı kullanıcıdan gelir: doğrudan güvenmeyin.
$activatedboolKurulumdan sonra otomatik etkinleştirilecek mi.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:module.addon_install', 10, function ($file, $activated) {
    // Dosya adi kullanicidan gelir: icerige bakin, ada degil.
    if (!Acme::signatureValid($file['tmp_name'] ?? '')) return 'Paket imzasi dogrulanamadi.';

    return null;
});

Eklenti silmeyi durdurma

gatemodule.addon_delete
AdminModules yazımdan önce

Bir eklenti kaldırılmadan önce çalışır.

Parametreler 1
$keystringSilinecek eklentinin anahtarı.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:module.addon_delete', 10, function ($key) {
    if (Acme::isRequired($key)) return 'Bu eklenti kurulumun calismasi icin gerekli.';

    return null;
});

Eklenti listesini değiştirme

filtermodule.addons_list
AdminModules bağla geçer

Eklenti sayfasının listesi hazırlandıktan sonra çalışır.

Parametreler 1
$moduleListarraybağlaÜç grup hâlinde liste: etkin, kapalı ve satın alınabilir olanlar. Yapıyı bozmadan değiştirin: şablon üç grubu da bekler.
Dönüş 1
voidDönüş yoksayılır; listenin üzerine yazarsınız.
Dinleyici
Hook::add('filter:module.addons_list', 10, function (&$moduleList) {
    // Uc grubun yapisini bozmayin.
    $moduleList['premium'] = Acme::filterOffers($moduleList['premium'] ?? []);
});

Kuyruk müdahalesini durdurma

gatemodule.queue_intervene
AdminModules toplu işlemde sıfır

Yönetici modül kuyruğuna elle müdahale etmeden önce çalışır: yeniden deneme, silme, temizleme ve hemen çalıştırma.

Parametreler 2
$actionstringMüdahalenin türü.
$idintHedef kaydın kimliği. Toplu işlemde sıfır gelir: tek bir kaydı denetlemeye çalışan bir kural o durumda hiçbir şeye bakmaz.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:module.queue_intervene', 10, function ($action, $id) {
    // Toplu islemde id SIFIR gelir: tek kayit varsayimi kurmayin.
    if ($id === 0 && $action === 'delete') return 'Toplu silme kapali.';

    return null;
});

Tuzaklar

Etkinleştirme kancalarına liste gelir

Tek bir modül seçilse bile parametre dizidir. Doğrudan karşılaştıran bir denetim hiçbir şey yakalamaz; listeyi gezin.

Kuyruk müdahalesinde toplu işlem sıfır taşır

Birden çok kayda birden müdahale edildiğinde kayıt kimliği sıfır gelir. Tek kayda bakmak üzere yazılmış bir kural o durumda sessizce hiçbir şeyi denetlemez.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.