Každý prechod spustí udalosť s príslušným modelom. Všetky udalosti sú v RoundlyConsulting\Approvals\Events a obsah vystavujú ako verejné vlastnosti:
| Udalosť | Obsah | Kedy sa spustí |
|---|---|---|
ApprovalRequested | approval | vyžiada sa čakajúce rozhodnutie (ask()) |
ApprovalApproved | approval | rozhodnutie sa schváli |
ApprovalRejected | approval | rozhodnutie sa zamietne |
ApprovalCancelled | approval | rozhodnutie sa stiahne (cancel()) |
ApprovalExpired | approval | čakajúce alebo schválené rozhodnutie vyprší |
ApprovalRequestResolved | request | žiadosť skončí schválením, zamietnutím alebo vypršaním |
ApprovalToggled | actor, entity, hasBeenApproved | prebehne toggle() / toggleApproval() |
ApprovalStageOpened | stage | viacstupňová žiadosť otvorí stupeň |
ApprovalStageCleared | stage | stupeň prejde schválením |
ApprovalDelegated | delegation | schvaľovateľ deleguje právomoc |
ApprovalDelegationRevoked | delegation | delegovanie sa zruší |
ApprovalStatusChanged | subject, from, to, actor | zastrešujúca — každý prechod stavu rozhodnutia či žiadosti, popri konkrétnej udalosti |
Zastrešujúca udalosť
Prihláste sa na ApprovalStatusChanged raz a uvidíte všetky prechody: rozhodnutie schválené, zamietnuté, stiahnuté — aj prepínačom či zmenou názoru, ktorá ho nahradí — alebo expirované a žiadosť vyhodnotenú či expirovanú. Nesie subjekt (zmenenú Approval alebo ApprovalRequest), stavy from a to typu ApprovalStatus a aktéra, ak je známy — pri vyhodnotenej žiadosti je null:
use RoundlyConsulting\Approvals\Events\ApprovalStatusChanged;
class AuditApprovalChanges
{
public function handle(ApprovalStatusChanged $event): void
{
// $event->from, $event->to, $event->subject, $event->actor
logger()->info("approval moved {$event->from->value} -> {$event->to->value}");
}
}Konkrétne listenery
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Approvals\Events\ApprovalApproved;
use RoundlyConsulting\Approvals\Events\ApprovalRequestResolved;
Event::listen(function (ApprovalApproved $event): void {
$approval = $event->approval; // the Approval model
});
Event::listen(function (ApprovalRequestResolved $event): void {
$request = $event->request; // approved, rejected or expired — see $request->status
$subject = $request->subject; // e.g. the Release
});ask() vytvorí čakajúce rozhodnutie, žiadne nemení, preto spustí len ApprovalRequested. Zmeny stupňov a delegovanie tiež spúšťajú len vlastné udalosti — nie zastrešujúcu.
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.