Ürün Yaşam Döngüsü Kancaları
Ürün oluşturma, güncelleme, silme ve satışa açmanın sekiz kancası.
Genel Bakış
Bir ürün üç adımdan geçer: oluşturulur, güncellenir, silinir. Üçünün de önünde durdurabileceğiniz bir kapı, arkasında haber veren bir olay bulunur.
Yanlarında iki durum kancası vardır. Tekil olan ürün başına çalışır; toplu olan listeden çok ürüne birden işlem uygulandığında tek kez çalışır.
Referans
Ürün oluşturmayı durdurma
Yeni bir ürün oluşturulmadan önce çalışır.
Hook::add('gate:product.create', 10, function ($input, $state) {
if (!Acme::namingOk($input['name'] ?? '')) return 'Urun adi kurumsal kaliba uymuyor.';
return null;
});Ürün oluşturulmasını izleme
Bir ürün oluşturulduktan sonra çalışır.
Hook::add('action:product.created', 10, function ($new_id, $input) {
// SIFIR = urun olusmadi.
if (!$new_id) return;
Acme::registerCatalogItem($new_id, $input['name'] ?? '');
});Ürün güncellemesini durdurma
Bir ürün güncellenmeden önce çalışır. Hem yeni veri hem eski kayıt elinizdedir: neyin değiştiğini karşılaştırabilirsiniz.
Hook::add('gate:product.update', 10, function ($id, $input, $detail) {
// Iki kayit da elinizde: farki olcun.
if (($detail['module'] ?? '') !== ($input['module'] ?? '') && Acme::hasLiveServices($id))
return 'Uzerinde calisan hizmet varken modul degistirilemez.';
return null;
});Ürün güncellemesini izleme
Ürün güncellendikten sonra çalışır.
Hook::add('action:product.updated', 10, function ($id, $input, $detail) {
Acme::syncCatalog($id, $input, $detail);
});Ürün silmeyi durdurma
Bir ürün silinmeden önce çalışır.
Hook::add('gate:product.delete', 10, function ($id, $detail) {
if (Acme::hasLiveServices($id)) return 'Bu urunde calisan hizmetler var.';
return null;
});Ürün silinmesini izleme
Ürün silindikten sonra çalışır.
Hook::add('action:product.deleted', 10, function ($product_id, $detail) {
Acme::dropCatalogItem($product_id);
});Ürün durumunun değişmesini izleme
Bir ürün satışa açıldığında ya da kapatıldığında çalışır.
active ya da inactive.Hook::add('action:product.status_changed', 10, function ($product_id, $status) {
Acme::setCatalogVisible($product_id, $status === 'active');
});Toplu işlemi izleme
Listeden birden çok ürüne birden işlem uygulandığında çalışır. Tekil durum olayının aksine burada tek çağrı gelir, ürün başına değil.
active ya da inactive.Hook::add('action:product.bulk_action_applied', 10, function ($action, $ids) {
// Tek cagri, cok urun: tekil durum olayi burada calismaz.
Acme::bulkVisibility($ids, $action === 'active');
});Tuzaklar
Yeni ürün kimliği sıfır gelebilir; bu, ürünün oluşturulamadığı anlamına gelir. Kimliği doğrudan kullanan bir dinleyici o durumda var olmayan bir kayda iş yapar. İlk satırda kontrol edin.
Listeden çok ürüne birden işlem uygulandığında yalnız toplu olay çalışır. Tekil durum kancasına bağladığınız iş o yolda hiç çalışmaz; ikisini birden dinleyin.
İlgili Makaleler
- Ürün Kancaları
- Hizmet Kancaları
- Kancalar Nasıl Çalışır
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.