NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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ťVlastnostiSpúšťa ju
AttributeAttachedowner, attributeKaž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().
AttributeDetachedowner, nameforget(), 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ý.
AttributesSyncedowner, attributessync(), 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 kryptomien

Odoslaní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.