---
title: "Validácia a odosielanie — Forms for Laravel | Roundly"
description: "Nájdite formulár, zvalidujte vstup podľa pravidiel polí a uložte odpoveď pre každé pole pod jedným referenčným uuid."
url: https://roundly-consulting.com/sk/open-source/navody/forms-for-laravel/odosielanie
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)

# Validácia a odosielanie

Fasáda Forms načíta formulár so zoradenými skupinami a poliami, zvaliduje vstup requestu podľa pravidiel jednotlivých polí a uloží odpovede:

```php
use RoundlyConsulting\Forms\Facades\Forms;

// Eager-loads groups and fields, ordered by their `order` column.
// Throws RoundlyConsulting\Forms\Exceptions\FormNotFoundException for an unknown key.
$form = Forms::find('contact');

// Validate request input — throws Illuminate\Validation\ValidationException on failure
// (a broken field rule and a value that fails its field's type alike). Returns the validated data.
$validated = Forms::validate(form: $form, request: request());

// Persist a submission for every field. Returns a SubmissionResult.
$result = Forms::submit(
    form: $form,
    request: request(),
    sender: auth()->user(), // any Eloquent model, or null
);

$result->uuid;        // shared reference id for this submission
$result->fieldCount;  // number of fields stored
$result->submittedAt; // CarbonInterface timestamp
```

submit() ukladá, nevaliduje. Najprv zavolajte validate() — spustí validátor Laravelu s pravidlami každého viditeľného poľa (názvy polí použije ako popisy atribútov spolu s vašimi hláškami) a potom skontroluje typy hodnôt. Obe zlyhania vyhodia rovnakú ValidationException, takže Laravel v oboch prípadoch presmeruje späť s chybami. Typický controller:

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Forms\Facades\Forms;

final class ContactFormController
{
    public function store(Request $request)
    {
        $form = Forms::find('contact');

        // Throws ValidationException (redirect back with errors) on failure.
        Forms::validate($form, $request);

        $result = Forms::submit($form, $request, $request->user());

        return back()->with('reference', $result->uuid);
    }
}
```

submit() beží v transakcii: vytvorí jeden agregát FormSubmission a jeden riadok Submission na každé pole, všetky so spoločným vráteným uuid, a potom spustí FormSubmitted. Pole skryté svojimi podmienkami dostane riadok bez hodnoty — nič, čo preň request poslal, sa neuloží. Odosielateľom je ľubovoľný Eloquent model, pri anonymných odpovediach null.

## Uzavreté formuláre sa odmietajú

Každá cesta k finálnej odpovedi odmietne formulár, ktorý odpovede neprijíma — neverejný alebo s uplynutým expires\_at — výnimkou FormSubmissionClosedException: submit(), draft() (aj draftTo()), finalize() aj surové createSubmission(). finalize() kontroluje znova, takže koncept uložený pri otvorenom formulári po jeho uzavretí nefinalizujete. Pre dôveryhodné interné či administrátorské odoslania použite bypassClosed: true:

```php
use RoundlyConsulting\Forms\Exceptions\FormSubmissionClosedException;

try {
    Forms::submit($form, request(), $user);
} catch (FormSubmissionClosedException $e) {
    // the form is not public, or its expires_at has passed
}

// trusted internal/admin submissions skip the check
Forms::submit($form, request(), $user, bypassClosed: true);
Forms::draft($form, request(), $user, bypassClosed: true);
Forms::finalize($uuid, bypassClosed: true);
```

## Nízkoúrovňové API

```php
// Write a single per-field row directly (imports, seeds) — the value is stored as-is.
// A new uuid is generated unless you pass one; rows that share a uuid form one submission.
$first = Forms::createSubmission($nameField, ['value' => 'Ann'], $user, bypassClosed: true);
Forms::createSubmission($emailField, ['value' => 'ann@example.com'], $user, uuid: $first->uuid, bypassClosed: true);

Forms::submission($first->uuid)->get()->values; // ['name' => 'Ann', 'email' => 'ann@example.com']
```

createSubmission() zapíše jeden riadok priamo a platí preň pravidlo uzavretého formulára, pokiaľ neodovzdáte bypassClosed: true. Riadky so spoločným uuid sa zaradia pod jednu finálnu odpoveď, ktorú vytvorí prvý z nich — Forms::submission($uuid) ju teda načíta a Forms::review($uuid) pošle na schválenie ako každú inú. Neplatné uuid alebo uuid odpovede iného formulára či konceptu vyhodí SubmissionNotFoundException. Chcete radšej injektovaného manažéra alebo akcie? Pozrite DI a akcie.

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