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

Fluentné buildery

Approvals::for(), as() a request() vracajú malé buildery, ktoré zbierajú kontext a nič nezapíšu až do terminálneho volania — approve(), reject(), ask(), cancel(), toggle() alebo open(). Každé terminálne volanie prechádza cez ApprovalsManager, takže ho Approvals::fake() zaznamená. Tabuľky metód sú v časti Fasáda Approvals.

Pripojenie rozhodnutia ku konkrétnej žiadosti

Rozhodnutie sa predvolene pripojí k poslednej otvorenej žiadosti schvaľovaného modelu. within() ho pripne ku konkrétnej žiadosti — tá musí patriť schvaľovanému modelu a byť ešte otvorená, takže rozhodnutie o jednom modeli sa nikdy nezapočíta do žiadosti iného a nič neskončí v už uzavretom kole:

use RoundlyConsulting\Approvals\Facades\Approvals;

$request = Approvals::request($release)->from([$lead, $qa])->open();

Approvals::for($release)->as($lead)->within($request)->because('Ship it')->approve();

Approvals::for($otherRelease)->as($lead)->within($request)->approve();
// InvalidApprovalRequestException — the request belongs to another subject; nothing is written

// …later, once $request has resolved:
Approvals::for($release)->as($qa)->within($request)->reject();
// ClosedApprovalRequestException — its round is over; nothing is written

Pomocník approvals()

Globálny pomocník approvals() vráti ten istý singleton manažér — hodí sa tam, kde uprednostňujete funkciu pred fasádou:

approvals()->for($deployment)->as($user)->approve();   // the same manager as the facade

Approvals::as($user)->for($deployment)->approve();     // start from either side

Absolútna expirácia

expiresIn() prijíma počet sekúnd od teraz; expiringAt() ľubovoľnú inštanciu Carbon. Obe má builder rozhodnutia aj builder žiadosti:

use Carbon\CarbonImmutable;
use RoundlyConsulting\Approvals\Facades\Approvals;

Approvals::for($budget)->as($cfo)
    ->because('Within the quarterly limit')
    ->expiringAt(CarbonImmutable::parse('2026-12-31 23:59'))
    ->approve();

Neúplný builder

Terminálne metódy rozhodnutia potrebujú aktéra aj schvaľovaný model. Ak niektorý chýba, vznikne IncompletePendingApprovalException; hasPending() potrebuje len schvaľovaný model:

use RoundlyConsulting\Approvals\Facades\Approvals;

Approvals::for($deployment)->approve();
// IncompletePendingApprovalException: No actor was set on the pending approval. Call as() first.

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.