Počúvajte tieto udalosti a rozšírte správanie aplikácie — auditné záznamy, reindexácia vyhľadávania, synchronizácia s inými systémami. Všetky sú v RoundlyConsulting\Attributes\Events:
| Udalosť | Vlastnosti | Spúšťa ju |
|---|---|---|
AttributeAttached | owner, attribute | Každý zápis hodnoty či metadát: set(), setMany(), stage()->save() a meta() (aj ich metódy na modeli) — a raz pre každú hodnotu v sync(). |
AttributeDetached | owner, name | forget(), forgetExcept() a atribúty navyše, ktoré odstráni sync() (aj ich metódy na modeli) — raz pre každý názov, ktorý bol naozaj pripojený. |
AttributesSynced | owner, attributes | sync(), stage()->sync() a syncAttributes(), keď sú pripojené všetky hodnoty. attributes je list<AttributeData>. |
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Attributes\Events\AttributeAttached;
use RoundlyConsulting\Attributes\Events\AttributeDetached;
use RoundlyConsulting\Attributes\Events\AttributesSynced;
Event::listen(function (AttributeAttached $event): void {
$event->owner; // the model the attribute belongs to
$event->attribute->name; // 'color'
$event->attribute->value; // typed value
});
Event::listen(function (AttributeDetached $event): void {
$event->owner;
$event->name; // 'color'
});
Event::listen(function (AttributesSynced $event): void {
$event->owner;
$event->attributes; // list<AttributeData>: ->name, ->value, ->meta
});Udalosti sa spúšťajú až po commite transakcie zápisu (implementujú ShouldDispatchAfterCommit), takže zápis vrátený rollbackom sa nikdy neohlási — a hodnota, ktorá neprejde prísnym režimom, validáciou alebo kontrolou jedinečnosti, nespustí nič.
Trieda listenera
Uveďte udalosť ako typ parametra v metóde handle() listenera a objavovanie udalostí v Laraveli ho zaregistruje samo:
namespace App\Listeners;
use App\Models\Product;
use RoundlyConsulting\Attributes\Events\AttributeAttached;
final class ReindexProductOnAttributeChange
{
public function handle(AttributeAttached $event): void
{
if (! $event->owner instanceof Product) {
return;
}
// re-index $event->owner in your search engine
}
}Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.