Štruktúra formulára
Formulár má skupiny — kroky alebo sekcie — a každá skupina má polia. Každý záznam nesie kľúč, ktorý je medzi živými záznamami jedinečný v rámci rodiča (kľúče formulárov sú jedinečné globálne; mäkko zmazaný záznam svoj kľúč uvoľní). Štruktúru môžete vytvoriť priamo cez modely:
use RoundlyConsulting\Forms\Models\Form;
use RoundlyConsulting\Forms\Models\Group;
use RoundlyConsulting\Forms\Models\Field;
$form = Form::create([
'name' => 'My Form',
'key' => 'my-form',
'is_public' => true, // optional, defaults to false
'expires_at' => null, // optional nullable datetime
]);
$group = Group::create([
'form_id' => $form->getKey(),
'name' => 'First Step',
'key' => 'first-step',
'order' => 0,
]);
$field = Field::create([
'form_id' => $form->getKey(),
'group_id' => $group->getKey(),
'name' => 'Name',
'key' => 'name',
'help' => 'Enter your name',
'type' => 'text',
'validations' => ['required', 'string'],
'options' => null, // e.g. ['CZ' => 'Czechia', 'SK' => 'Slovakia']
'autofill' => null,
'order' => 0,
]);Cesta poľa a tvar requestu
Každé pole vystavuje bodkovú cestu path() zloženú z form.key, group.key a field.key (napr. my-form.first-step.name). Táto cesta je kľúč, z ktorého resolver číta request, preto sú HTML vstupy vnorené podľa formulára a skupiny:
<form method="POST" action="{{ route('contact.store') }}">
@csrf
<input name="contact[details][name]">
<input name="contact[details][email]" type="email">
<textarea name="contact[message][body]"></textarea>
<button type="submit">Send</button>
</form>Vzťahy a pomocné metódy
$field->path(); // 'my-form.first-step.name' — the request key
$form->groups; // HasMany<Group>
$form->fields; // HasManyThrough<Field> (through groups)
$form->submissions; // HasMany<Submission> — one row per field per submission
$group->fields; // HasMany<Field>
$field->form; // BelongsTo<Form>
$field->group; // BelongsTo<Group>
$form->isExpired(); // expires_at has passed
$form->isAcceptingSubmissions(); // is_public and not expired
$field->isRequired(); // has a plain 'required' rule (required_if & co. don't count)
$field->hasOptions(); // options set and non-empty
$field->hasValidations(); // validations set and non-empty
$field->resolver(); // the Resolver mapped to the field's typeStĺpce poľa options, validations, conditions a messages sa castujú na polia. Pri všetkom okrem jednorazových prípadov uprednostnite fluentný builder z nasledujúcej sekcie — celú štruktúru vytvorí v jednej transakcii a poradie pridelí sám.
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.