Možnosti pre select
toOptions() vráti kolekciu hodnota => popis pripravenú pre element <select> alebo formulárový komponent; toArray() je tá istá mapa ako obyčajné pole pre JSON a odpovede API:
NewsCategory::toOptions();
// Collection: ['hot-news' => 'Hot News', 'regular-news' => 'Regular News', 'private-news' => 'Private News']
NewsCategory::toArray();
// ['hot-news' => 'Hot News', 'regular-news' => 'Regular News', 'private-news' => 'Private News']Nie v konfiguračných súboroch
Popisy sa prekladajú, preto možnosti zostavujte za behu — v controlleroch, views a resources — a nie v súbore config/*.php: konfigurácia sa načíta skôr, než existuje prekladač, a cachovaná konfigurácia by popisy zmrazila v jednom jazyku. Do konfiguračného súboru patria hodnoty bez prekladu z values():
use App\Enums\NewsCategory;
// config/news.php — translation-free, safe to cache
return [
'categories' => NewsCategory::values()->all(),
];Vo formulári v Blade
Odovzdajte možnosti do view a vykreslite ich — kľúče sú presne tie hodnoty, ktoré prijme validačné pravidlo:
use App\Enums\NewsCategory;
use Illuminate\Contracts\View\View;
final class CreateArticleController
{
public function __invoke(): View
{
return view('articles.create', [
'categories' => NewsCategory::toOptions(),
]);
}
}<select name="category">
@foreach ($categories as $value => $label)
<option value="{{ $value }}" @selected(old('category') === $value)>{{ $label }}</option>
@endforeach
</select>Popisy sa riadia aktívnym jazykom, takže preložená aplikácia vykreslí preložené možnosti bez ďalšieho kódu. Pri čistom enume sú kľúčmi názvy prípadov; pri celočíselnom enume sú kľúče celé čísla.
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.