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

Deklaratívne formuláre

Definujte formuláre v config('forms.definitions') a synchronizujte ich do databázy — chýbajúce sa vytvoria, zmenené aktualizujú, a to idempotentne:

// config/forms.php
'definitions' => [
    [
        'key' => 'contact',
        'name' => 'Contact',
        'is_public' => true,
        'groups' => [
            ['key' => 'details', 'name' => 'Details', 'fields' => [
                ['key' => 'name', 'name' => 'Name', 'rules' => ['required']],
            ]],
        ],
    ],
],
php artisan forms:sync

Existujúce formuláre (párované podľa kľúča) prejdú tou istou porovnávacou úpravou ako Forms::update(), takže opakované spustenie zmení len to, čo sa zmenilo, a nikdy nič nezmaže.

Kľúče definície

ÚroveňKľúče
Formulárkey, name, is_public (alebo isPublic), expires_at (alebo expiresAt — reťazec dátumu, Unix timestamp, dátumový objekt, alebo null či prázdna hodnota bez expirácie), groups
Skupinakey, name, order (predvolene jej pozícia; explicitná 0 sa zachová), fields
Polekey, name, type (predvolene text), help, autofill, options, rules (alebo validations), order (predvolene jeho pozícia; explicitná 0 sa zachová), conditions, messages

Úplnejšia definícia s typmi, hláškami, možnosťami a podmienkou:

[
    'key' => 'job-application',
    'name' => 'Job application',
    'is_public' => true,
    'expires_at' => '2031-01-01 00:00:00',   // or a Unix timestamp, or a date object
    'groups' => [
        [
            'key' => 'applicant',
            'name' => 'Applicant',
            'fields' => [
                ['key' => 'name', 'name' => 'Full name', 'rules' => ['required', 'string']],
                [
                    'key' => 'email',
                    'name' => 'Email',
                    'type' => 'email',
                    'rules' => ['required', 'email'],
                    'messages' => ['required' => 'We need an email to reply to you.'],
                ],
                [
                    'key' => 'role',
                    'name' => 'Role',
                    'type' => 'select',
                    'options' => ['dev' => 'Developer', 'pm' => 'Product manager'],
                ],
                [
                    'key' => 'portfolio',
                    'name' => 'Portfolio URL',
                    'help' => 'Only for developer roles',
                    'conditions' => [['field' => 'role', 'operator' => '=', 'value' => 'dev']],
                ],
            ],
        ],
    ],
],

Z kódu

Forms::sync($definitions) vykoná tú istú logiku s explicitným zoznamom definícií; Forms::create() prijíma jednu FormDefinitionData. Hodnota expires_at v definícii môže byť reťazec dátumu ('2031-01-01 00:00:00'), Unix timestamp alebo dátumový objekt; order skupiny či poľa je predvolene jeho pozícia a explicitná 0 sa zachová:

use RoundlyConsulting\Forms\DataTransferObjects\FormDefinitionData;

// Same logic with an explicit definition list — returns the synced keys.
$keys = Forms::sync([
    ['key' => 'feedback', 'name' => 'Feedback', 'groups' => []],
]); // ['feedback']

// Or build a single definition from an array and create it.
$form = Forms::create(FormDefinitionData::fromArray([
    'key' => 'newsletter',
    'name' => 'Newsletter',
    'groups' => [
        ['key' => 'main', 'name' => 'Main', 'fields' => [
            ['key' => 'email', 'name' => 'Email', 'type' => 'email', 'rules' => ['required', 'email']],
        ]],
    ],
]));

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.