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

Možnosti pre frontend

options() vráti kolekciu typovaných DTO EnumOption — zoznam objektov, aký očakávajú selecty v JavaScripte, vrátane názvu prípadu:

NewsCategory::options();
// Collection<EnumOption{ value: 'hot-news', label: 'Hot News', name: 'HotNews' }, ...>

$option = NewsCategory::options()->first();

$option->value; // 'hot-news'
$option->label; // 'Hot News'
$option->name;  // 'HotNews'

$option->toArray();
// ['value' => 'hot-news', 'label' => 'Hot News', 'name' => 'HotNews']

DTO EnumOption

ČlenTypHodnota
valuestring|intHodnota backed enumu — pri čistom enume názov prípadu.
labelstringreadable() — preložený popis.
namestringNázov prípadu.
toArray()array['value' => ..., 'label' => ..., 'name' => ...]

RoundlyConsulting\Enums\DataTransferObjects\EnumOption je final readonly trieda, takže vytvorenú možnosť už nemožno zmeniť.

Možnosti z controllera

use App\Enums\NewsCategory;
use Illuminate\Http\JsonResponse;
use RoundlyConsulting\Enums\DataTransferObjects\EnumOption;

final class ArticleCategoryController
{
    public function __invoke(): JsonResponse
    {
        return response()->json([
            'categories' => NewsCategory::options()
                ->map(fn (EnumOption $option): array => $option->toArray())
                ->all(),
        ]);
    }
}

// {"categories":[{"value":"hot-news","label":"Hot News","name":"HotNews"}, ...]}

Vlastnosti DTO sú verejné, takže aj samotná kolekcia sa zakóduje do JSON v rovnakom tvare — NewsCategory::options() môžete odovzdať priamo do JSON odpovede alebo ako prop pre Inertia.

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.