Podmienené polia
Pole zobrazíte alebo vyžadujete len vtedy, keď sa iné pole toho istého formulára — v ľubovoľnej skupine — zhoduje s hodnotou. Podmienka sa uloží na pole a uplatní sa pri validácii — skryté pole sa preskočí (a čokoľvek pre neho request poslal, sa neuloží) a podmienene povinné pole sa vyžaduje len pri splnení podmienky:
Forms::define('signup', 'Sign up')
->group('step-1', 'Step 1', function (GroupBuilder $g): void {
$g->field('country', 'Country');
$g->field('age', 'Age')->number();
})
->group('step-2', 'Step 2', function (GroupBuilder $g): void {
$g->field('state', 'State')->requiredWhen('country', 'US'); // a field of step 1
$g->field('guardian', 'Guardian')->visibleWhen('age', [16, 17], 'in');
$g->field('zip', 'ZIP')->visibleWhen('step-1.country', 'US'); // named exactly
})
->create();requiredWhen() pridá pravidlo required a uloží podmienku; visibleWhen() uloží len podmienku. Obe prijímajú kľúč odkazovaného poľa, hodnotu a voliteľný operátor. Samotný kľúč sa hľadá najprv v skupine závislého poľa, potom v ostatných skupinách formulára (podľa poradia skupín) — neskorší krok tak môže závisieť od skoršieho. Ak majú dve skupiny pole s rovnakým kľúčom, pomenujte ho presne zápisom group_key.field_key.
Operátory
| Operátor | Podmienka platí, keď odkazovaná odpoveď… |
|---|---|
= | sa rovná hodnote (predvolené). |
!= | sa od hodnoty líši. |
in | je jednou z hodnôt v poli. |
not_in | nie je žiadnou z hodnôt v poli. |
filled | je vyplnená (hodnota sa ignoruje). |
empty | je prázdna (hodnota sa ignoruje). |
Ako sa ukladá
Podmienky sú obyčajné dáta na poli, takže prežijú aj v konfiguračných definíciách a vo výstupe API. Pole môže mať viac podmienok — zobrazí sa len vtedy, keď platia všetky:
// visibleWhen('age', [16, 17], 'in') stores this on the field's `conditions` column:
[
['field' => 'age', 'operator' => 'in', 'value' => [16, 17]],
]
$field->isVisible($request->all()); // evaluates every stored conditionPrejavte 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.