Fasáda Forms
Odporúčaným vstupným bodom je RoundlyConsulting\Forms\Facades\Forms. Jej koreňom je RoundlyConsulting\Forms\FormsManager — tenký manažér, ktorý pri každom volaní získa z kontajnera jednu akciu. Vaše prepísania v kontajneri aj Forms::fake() sa preto uplatnia na každej ceste. Celé API na jednom mieste:
use RoundlyConsulting\Forms\Facades\Forms;
use RoundlyConsulting\Forms\GroupBuilder;
Forms::define('contact', 'Contact us') // FormBuilder, stored by create()
->group('details', 'Details', function (GroupBuilder $g): void {
$g->field('email', 'Email')->email()->required();
})
->create();
$form = Forms::find('contact'); // groups + fields, ordered
Forms::update('contact')->name('Contact us')->save(); // diff and save a structural edit
Forms::sync(); // forms from config('forms.definitions')
$data = Forms::validate($form, $request); // or a ValidationException
$result = Forms::submit($form, $request, $user); // SubmissionResult
$draft = Forms::draft($form, $request, $user); // a resumable draft
Forms::finalize($draft->uuid); // validate and promote it
Forms::submissions($form)->latest()->get(); // Collection<AssembledSubmission>
Forms::submission($result->uuid)->get(); // one submission, by uuid or model
Forms::review($result->uuid)->requiring([$lead, $qa])->quorum(2)->open();
Forms::createSubmission($field, ['value' => 'Jane'], $user); // one raw field rowVšetky metódy
| Metóda | Vracia | Čo robí |
|---|---|---|
find($key) | Form | Formulár so zoradenými skupinami a poliami. |
define($key, $name) | FormBuilder | Fluentne definovaný nový formulár; uloží ho ->create(). |
create(FormDefinitionData) | Form | Formulár z definície v jednej transakcii. |
update($key) | UpdateFormBuilder | Fluentná úprava štruktúry; ->save() porovná a uloží zmeny. |
sync(?array $definitions = null) | list<string> | Vytvorí alebo aktualizuje formuláre z forms.definitions (alebo z odovzdaného zoznamu). |
validate($form, $request) | array | Zvalidované dáta, alebo ValidationException. |
submit($form, $request, ?$sender, bypassClosed:) | SubmissionResult | Finálna odpoveď; spustí FormSubmitted. |
draft($form, $request, ?$sender, ?$uuid, bypassClosed:) | SubmissionResult | Nevalidovaný koncept, v ktorom možno pokračovať. |
finalize($uuid, bypassClosed:) | SubmissionResult | Zvaliduje koncept a povýši ho na finálnu odpoveď. |
submissions($form) | SubmissionQuery | Čítač, ktorý skladá jednu sadu odpovedí na každé odoslanie. |
submission($uuid | FormSubmission) | SubmissionHandle | Jedna odpoveď či koncept: uuid(), get(), model(), finalize(), review(). |
review($uuid | FormSubmission) | PendingSubmissionReview | Schvaľovanie určenými schvaľovateľmi; spustí ho ->open(). |
createSubmission($field, $value, ?$sender, ?$uuid, bypassClosed:) | Submission | Jeden surový riadok poľa (importy, seedy), zaradený pod odpoveď so svojím uuid. |
fake() | FormsFake | Zapne zaznamenávajúci fake (pozrite Testovanie). |
Buildery a handly
- Forms::define($key, $name) → FormBuilder: public(), expiresAt(), group($key, $name, $callback), create() — pozrite Fluentný builder formulárov.
- Forms::update($key) → UpdateFormBuilder: name(), public(), expiresAt(), group(), save() — pozrite Úprava formulárov.
- Forms::submissions($form) → SubmissionQuery: forSender(), latest(), oldest(), withDrafts(), whereUuid(), pendingApproval(), approved(), rejected() a nakoniec get(), first() alebo count().
- Forms::submission($uuid | $model) → SubmissionHandle: uuid(), get(), model(), finalize(), review(). Neznáme uuid vyhodí SubmissionNotFoundException.
- Forms::review($uuid | $model) → PendingSubmissionReview: requiring(), rule(), unanimous(), any(), quorum(), weighted(), open().
Buildery aj handly volajú späť manažéra a rovnako aj trait HasForms — nech váš kód zvolí ktorúkoľvek cestu, prejde tým istým manažérom a zobrazí sa vo Forms::fake().
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.