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

Š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 type

Stĺ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 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.