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
| Člen | Typ | Hodnota |
|---|---|---|
value | string|int | Hodnota backed enumu — pri čistom enume názov prípadu. |
label | string | readable() — preložený popis. |
name | string | Ná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 kryptomienOdoslaní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.