Štyri udalosti sú v RoundlyConsulting\Addresses\Events. Každá nesie jednu verejnú vlastnosť $address a používa Dispatchable a SerializesModels:
| Udalosť | Odošle sa, keď |
|---|---|
AddressCreated | adresa vznikne cez balík — Addresses::for()->add(), save() v builderi, addAddress(), createAddress() alebo CreateAddressAction. |
AddressUpdated | Addresses::update() — UpdateAddressAction — upraví adresu. |
AddressDeleted | sa zmaže inštancia modelu Address — mäkko aj cez forceDelete(). |
PrimaryAddressChanged | sa adresa stane primárnou adresou svojho typu — setPrimary() či setPrimaryAddress(), pridanie s isPrimary: true alebo ->primary(), prípadne úprava s isPrimary: true. Odošle sa po AddressCreated / AddressUpdated, keď je povýšenie zapísané; nie, ak adresa primárna už bola. |
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Addresses\Events\AddressCreated;
use RoundlyConsulting\Addresses\Events\PrimaryAddressChanged;
// e.g. in AppServiceProvider::boot()
Event::listen(function (AddressCreated $event): void {
$address = $event->address; // the new Address
$owner = $event->address->addressable; // its owner
});
Event::listen(function (PrimaryAddressChanged $event): void {
// e.g. recalculate shipping for $event->address->addressable
});Alebo použite samostatnú triedu listenera:
namespace App\Listeners;
use RoundlyConsulting\Addresses\Events\AddressUpdated;
final class RecalculateTaxOnAddressChange
{
public function handle(AddressUpdated $event): void
{
$owner = $event->address->addressable;
// recalculate tax for $owner
}
}Čo udalosti neodošle
- Priame zápisy cez Eloquent — $customer->addresses()->create([...]), $address->update([...]) — ani factories neodošlú AddressCreated ani AddressUpdated.
- Hromadné mazanie dopytom, napríklad $customer->addresses()->delete(), neodošle AddressDeleted.
- Povýšenie alebo opätovné uloženie adresy, ktorá už primárna je, neodošle PrimaryAddressChanged — pozrite Primárne adresy.
Keďže udalosti používajú SerializesModels, listenery vo fronte dostanú Address znova načítanú z databázy.
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.