---
title: "Definovanie nastavení — Options for Laravel | Roundly"
description: "Zdeďte BaseOption a deklarujte kľúč, predvolenú hodnotu, cast, šifrovanie, pravidlá a prezentáciu — alebo použite make:option."
url: https://roundly-consulting.com/sk/open-source/navody/options-for-laravel/definovanie-nastaveni
language: sk
---

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

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

# Definovanie nastavení

Každé nastavenie je malá trieda, ktorá dedí od BaseOption. Bez prepísaní je kľúčom názov triedy, hodnota sa pretypuje na string a predvolená hodnota je null:

```php
use RoundlyConsulting\Options\BaseOption;

final class SimpleOption extends BaseOption
{
    // Uses all defaults: key 'SimpleOption', cast 'string', default null.
}
```

Prispôsobíte ho prepísaním hookov — key(), default(), castAs(), encrypted(), rules(), authorizeRead() / authorizeWrite() a prezentačných metód label(), help(), section() a order():

```php
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use RoundlyConsulting\Options\BaseOption;

final class NotificationPreferences extends BaseOption
{
    public function key(): string
    {
        return 'notification-preferences';
    }

    public function default(): mixed
    {
        return collect(['email' => true, 'sms' => false]);
    }

    public function castAs(): string|CastsAttributes
    {
        return 'collection';
    }
}
```

Príklady v tejto dokumentácii používajú ThemeOption v tejto podobe:

```php
namespace App\Options;

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use RoundlyConsulting\Options\BaseOption;

final class ThemeOption extends BaseOption
{
    public function key(): string
    {
        return 'theme';
    }

    public function default(): mixed
    {
        return 'light';
    }

    public function castAs(): string|CastsAttributes
    {
        return 'string';
    }
}
```

## Čo môžete prepísať

| Metóda | Predvolené | Účel |
| --- | --- | --- |
| `key(): string` | názov triedy | Kľúč v úložisku — jedinečný pre každé nastavenie. |
| `default(): mixed` | null | Vráti sa, keď pre daný rozsah nie je nič uložené. |
| `castAs(): string\|CastsAttributes` | 'string' | Ako sa uložená hodnota pretypuje pri čítaní a zápise. |
| `encrypted(): bool` | false | Šifrovať hodnotu v úložisku. |
| `rules(): array\|string` | \[\] | Validačné pravidlá Laravelu, aplikované pri set(). |
| `readable(): string` | kľúč s veľkými začiatočnými písmenami | Čitateľný názov — z notification-preferences vznikne Notification Preferences. Používa ho options:list. |
| `label(): string` | readable() | Popisok poľa v definícii skupiny. |
| `help(): ?string` | null | Nápoveda pod poľom. |
| `section(): ?string` | null | Sekcia alebo záložka, do ktorej môže UI pole zaradiť. |
| `order(): int` | 0 | Poradie v rámci skupiny (vzostupne). |
| `authorizeRead(?Authenticatable, ?Model): bool` | true | Hook na čítanie, vynucovaný pri zapnutej autorizácii. |
| `authorizeWrite(?Authenticatable, ?Model): bool` | true | Hook na zápis, vynucovaný pri zapnutej autorizácii. |

label(), help(), section() a order() dokumentuje voliteľný kontrakt HasPresentation, authorizeRead() a authorizeWrite() kontrakt AuthorizesOptions. BaseOption obe sady už implementuje, takže kontrakty implementovať nemusíte.

## Generovanie nastavení

make:option vytvorí triedu v app/Options. --key a --cast doplnia kľúč a cast, --encrypted zapne šifrovanie a --enum prepne na šablónu s castom cez EnumCast:

```bash
php artisan make:option ThemeOption --cast=string --key=theme
php artisan make:option SecretToken --encrypted
php artisan make:option StatusOption --enum="App\Enums\Status"
```

## Priame použitie triedy nastavenia

Každé nastavenie funguje aj samostatne — make() pre globálny rozsah, for() pre vlastníka. Ide len o skratku, nie o inú cestu: value(), set(), has(), forget(), reset() a remember() sú final a idú cez ten istý OptionsManager ako fasáda, takže sa správajú rovnako a Options::fake() ich vidí:

```php
ThemeOption::make()->value();          // global value, or default() when unset
ThemeOption::make()->set('dark');      // global write

ThemeOption::for($user)->value();      // owner-scoped read
ThemeOption::for($user)->set('light'); // owner-scoped write
ThemeOption::for($user)->has();
ThemeOption::for($user)->forget();
```

## 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/options-for-laravel.md)
