---
title: "Resolvery a predvyplnenie — Forms for Laravel | Roundly"
description: "Vlastným resolverom určíte, ako typ poľa číta request aj úložisko, a triedami Autofill polia predvyplníte."
url: https://roundly-consulting.com/sk/open-source/navody/forms-for-laravel/resolvery-a-predvyplnenie
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)

# Resolvery a predvyplnenie

Resolver určuje, ako sa hodnota poľa číta z requestu (toStorable) a späť z úložiska (fromStorage). Balík obsahuje DefaultResolver a MediaFileResolver. Implementujte RoundlyConsulting\\Forms\\Resolvers\\Resolver — jeho konštruktor dostane Field — a namapujte ho na typ poľa v config/forms.php:

```php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use RoundlyConsulting\Forms\Models\Field;
use RoundlyConsulting\Forms\Resolvers\Resolver;

class CheckboxResolver implements Resolver
{
    public function __construct(private Field $field) {}

    public function toStorable(Request $request, ?Model $sender = null): array
    {
        return ['value' => $request->boolean($this->field->path())];
    }

    public function fromStorage(?Model $sender = null): mixed
    {
        return $this->field->submissions()
            ->where('field_id', $this->field->getKey())
            ->value('value')['value'] ?? null;
    }
}
```

```php
// config/forms.php
'fields' => [
    'default' => \RoundlyConsulting\Forms\Resolvers\DefaultResolver::class,
    'checkbox' => \App\Forms\CheckboxResolver::class,
],
```

Hodnotu vracajte zabalenú ako \['value' => …\] — presne tento tvar rozbaľuje typedValue() aj čítač odpovedí. Typ bez vlastného mapovania použije fields.default; ak chýba aj ten, vyhodí sa UnresolvableFieldException.

## Resolvery, ktoré potrebujú uložený riadok

Resolver, ktorý pred uložením hodnoty potrebuje existujúci riadok odpovede, navyše implementuje AttachesToSubmission — jeho attach() beží po vytvorení riadku v tej istej transakcii a restoreUpload() vráti dočasnú kópiu uloženého súboru (alebo null), aby ho finalizácia konceptu mohla zvalidovať podľa pravidiel poľa. Referenčnou implementáciou je MediaFileResolver:

```php
// RoundlyConsulting\Forms\Resolvers\AttachesToSubmission
public function attach(Submission $submission, Request $request, ?Model $sender = null): void;

// A temporary copy of the stored file (or null), so finalizing a draft can validate it
// against the field's rules — the caller deletes the copy once validation has run.
public function restoreUpload(Submission $submission): ?UploadedFile;

// How MediaFileResolver implements attach() — the row exists, so it can own media:
public function attach(Submission $submission, Request $request, ?Model $sender = null): void
{
    $file = $request->file($this->field->path());

    if (! $file instanceof UploadedFile) {
        return;
    }

    $media = $submission->addMedia($file)->toBucket($submission->attachmentBucket());

    $submission->update(['value' => ['value' => $media->uuid]]);
}
```

## Predvyplnenie (autofill)

Nastavte autofill poľa na triedu implementujúcu RoundlyConsulting\\Forms\\Autofill\\Autofill a predvolenú hodnotu vypočítate za behu:

```php
use RoundlyConsulting\Forms\Autofill\Autofill;
use RoundlyConsulting\Forms\Models\Field;

class CurrentUserEmail implements Autofill
{
    public function fill(Field $field): mixed
    {
        return auth()->user()?->email;
    }
}

// $field->getAutofillValue() resolves the class and returns its fill() result,
// or the raw `autofill` string when it isn't an Autofill class — such a class is never built.
```

```php
$g->field('email', 'Email')->email()->autofill(CurrentUserEmail::class);

$field->getAutofillValue(); // 'jane@example.com' for the signed-in user
```

Triedy Autofill sa resolvujú cez kontajner, takže funguje injektovanie závislostí v konštruktore. Stĺpec autofill sú dáta: trieda, ktorá nie je Autofill, sa nikdy nevytvorí — vráti sa jej reťazec bez zmeny. FieldResource sprístupní vypočítanú hodnotu vášmu frontendu.

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