Všetky výnimky balíka sú v RoundlyConsulting\Approvals\Exceptions a rozširujú ApprovalsException, ktorá je sama RuntimeException — jeden catch tak pokryje celú rodinu:
| Výnimka | Kedy vznikne |
|---|---|
ClosedApprovalRequestException | Rozhodnutie alebo stiahnutie — approve, reject, toggle, ask či cancel — smeruje do uzavretej žiadosti (schválenej, zamietnutej, zrušenej či expirovanej), pripnutej cez within() aj vtedy, keď je otvorené neskoršie kolo, alebo preto, že všetky žiadosti subjektu sú uzavreté (for). Vlastnosť $request je táto žiadosť. |
IncompletePendingApprovalException | Builder rozhoduje bez aktéra (missingActor) alebo bez schvaľovaného modelu (missingApprovable). |
InvalidApprovalModelException | Nakonfigurovaná trieda modelu nerozširuje očakávaný základný model (forClass). |
InvalidApprovalRequestException | Rozhodnutie — aj toggle() — alebo close() je pripojené k žiadosti iného subjektu (foreignSubject); builder žiadosti dostane from() aj stages() (mixedApprovers); workflow() nasleduje po from(), rule(), any(), quorum(), weighted(), stages() či continueOnRejection(), ktoré definuje šablóna (definedByWorkflow); ask() nasleduje po weight() (weightOnAsk); reject() po expirácii (expiryOnReject); cancel() po weight() či expirácii (settingsOnCancel); close() po because() (reasonOnClose) alebo po as(), weight() či expirácii (settingsOnClose); schvaľovateľ nie je uložený (unsavedApprover); žiadosť potrebuje viac schválení, než vymenuje schvaľovateľov (moreRequiredThanNamed); kvórum je menšie ako 1 (thresholdBelowOne) alebo ho schvaľovatelia nemôžu dosiahnuť (unreachableThreshold); žiadosť či stupeň, ktoré by ich pravidlo nikdy neschválilo, lebo nepotrebujú žiadne schválenie — napr. žiadosť bez menovaných schvaľovateľov pri predvolenom pravidle Unanimous (needsNoApprovals). |
InvalidDelegationException | Delegovanie na seba (selfDelegation), obdobie, ktoré končí skôr, než začne (endsBeforeStart), alebo ApprovalDelegation::revoke($at) s časom v budúcnosti (futureRevocation). |
InvalidStatusTransitionException | Nepovolený prechod stavu na modeli Approval (between), alebo close() s iným výsledkom než Cancelled či Expired — aj keď nie je otvorené žiadne kolo (notAClosingOutcome). |
UnauthorizedApprovalException | Autorizačná Gate aktéra odmietne (forActor), alebo aktér nie je menovaným schvaľovateľom žiadosti či jej otvoreného stupňa ani zástupcom niektorého z nich (notAnApprover). |
UnknownWorkflowException | Šablóna workflow chýba (named) alebo je chybná (invalid). |
use RoundlyConsulting\Approvals\Exceptions\ApprovalsException;
use RoundlyConsulting\Approvals\Exceptions\ClosedApprovalRequestException;
use RoundlyConsulting\Approvals\Exceptions\UnauthorizedApprovalException;
use RoundlyConsulting\Approvals\Facades\Approvals;
try {
Approvals::for($post)->as($user)->approve();
} catch (UnauthorizedApprovalException $e) {
// the gate denied this actor, or the request does not name it
} catch (ClosedApprovalRequestException $e) {
// the round is over — $e->request is the closed request
} catch (ApprovalsException $e) {
// any other approvals error
}Každú výnimku vytvára pomenovaná statická factory uvedená v zátvorke vyššie, čo sa hodí pri overovaní správ v testoch.
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.