---
title: "Deklaratívne formuláre — Forms for Laravel | Roundly"
description: "Deklarujte formuláre v config/forms.php a idempotentne ich synchronizujte do databázy príkazom php artisan forms:sync."
url: https://roundly-consulting.com/sk/open-source/navody/forms-for-laravel/deklarativne-formulare
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Forms for Laravel](https://roundly-consulting.com/sk/open-source/navody/forms-for-laravel.md)

# 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:

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

```bash
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ár | `key`, `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` |
| Skupina | `key`, `name`, `order` (predvolene jej pozícia; explicitná 0 sa zachová), `fields` |
| Pole | `key`, `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:

```php
[
    '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á:

```php
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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/forms-for-laravel.md)
