Výnimky a preklady
Všetky výnimky balíka dedia z RoundlyConsulting\Requests\Exceptions\RequestException (RuntimeException), takže celú hierarchiu zachytíte naraz:
use RoundlyConsulting\Requests\Exceptions\InvalidStatusTransition;
use RoundlyConsulting\Requests\Exceptions\RequestException;
try {
Requests::approve($request, $alice);
} catch (InvalidStatusTransition $e) {
$e->getMessage(); // 'Cannot transition a request from Rejected to Approved.'
} catch (RequestException $e) {
// any other package exception
}- InvalidStatusTransition — vyhodí ju ochrana, keď je zapnuté enforce_transitions a prechod nie je povolený. Obsahuje $from a $to.
- RequestAlreadyResolved — vyhodí sa bez ohľadu na enforce_transitions pri akcii, ktorú žiadosť nemôže prijať: akýkoľvek presun zo stavu Cancelled, čokoľvek okrem reopen() pri žiadosti Expired a approve() / reject() po uzavretí schvaľovacieho kola. Obsahuje $status.
- InvalidApprover — schvaľovateľ, ktorý nie je Eloquent model (samotné id), alebo deklarovaný schvaľovateľ, ktorý už neexistuje, keď znovu otvorená žiadosť obnovuje svoje kolo.
Vlastné výnimky schvaľovacieho enginu prechádzajú bez zmeny — najmä UnauthorizedApprovalException pre aktéra, ktorý nie je deklarovaný schvaľovateľ, ClosedApprovalRequestException pre rozhodnutie priamo na žiadosti, ktorej kolo sa skončilo, a InvalidApprovalRequestException pre kolo, ktoré sa nedá otvoriť (neuložený schvaľovateľ, jednoduchý zoznam schvaľovateľov spolu so stages(), nedosiahnuteľné kvórum).
use RoundlyConsulting\Requests\Exceptions\InvalidApprover;
use RoundlyConsulting\Requests\Exceptions\RequestAlreadyResolved;
try {
Requests::approve($cancelledRequest, $alice);
} catch (RequestAlreadyResolved $e) {
$e->status; // Status::Cancelled — a cancelled request is final
}
Requests::make()->requireApprovalsFrom([$alice->id]); // throws InvalidApprover — a bare id names no model typePreklady
Správy sú preložiteľné cez namespace requests::messages. Publikujte ich tagom requests-translations, ak ich chcete prepísať alebo pridať jazyky:
// lang/vendor/requests/en/messages.php
return [
'invalid_status_transition' => 'Cannot transition a request from :from to :to.',
'request_already_resolved' => 'The request is already resolved (:status) and cannot be changed.',
'approver_not_a_model' => 'An approver must be an Eloquent model, :type given: a bare id names no model type, so it could not be enforced.',
'approver_missing' => 'The approval round cannot be reopened: approver :type #:id no longer exists.',
];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.