Všetky balíky
Enums for Laravel
Validácia
validationRule() zostaví reťazec pravidla in:... z values() — z hodnôt backed enumu, pri čistom enume z názvov prípadov — takže zoznam povolených hodnôt sa pri zmene prípadov nikdy nerozíde s kódom:
$request->validate([
'category' => ['required', NewsCategory::validationRule()],
]);
// validationRule() === 'in:hot-news,regular-news,private-news'Vo form requeste
namespace App\Http\Requests;
use App\Enums\NewsCategory;
use Illuminate\Foundation\Http\FormRequest;
final class StoreArticleRequest extends FormRequest
{
/**
* @return array<string, array<int, string>>
*/
public function rules(): array
{
return [
'title' => ['required', 'string', 'max:255'],
'category' => ['required', NewsCategory::validationRule()],
];
}
}Po validácii je isté, že hodnota patrí existujúcemu prípadu, takže natívne from() výnimku nevyhodí:
public function store(StoreArticleRequest $request): RedirectResponse
{
$article = Article::create([
'title' => $request->validated('title'),
'category' => NewsCategory::from($request->validated('category')),
]);
return to_route('articles.show', $article);
}Polia hodnôt
Pri zozname hodnôt použite pravidlo na každý prvok:
$request->validate([
'categories' => ['required', 'array'],
'categories.*' => [NewsCategory::validationRule()],
]);Čo obsahuje pravidlo
- Pravidlo tvorí in: a hodnoty z values() spojené čiarkami — pre celočíselný enum 'in:0,5,10'. Pravidlo in v Laraveli porovnáva reťazce, takže vstup z formulára ako '5' prejde.
- Na čistom enume vznikne z názvov prípadov — 'in:Active,Archived' — a prijme presne tieto názvy.
- Laravel číta zoznam späť ako CSV, preto hodnotu, ktorá by túto syntax narušila — prázdnu, s čiarkou alebo začínajúcu úvodzovkou — dá do úvodzoviek a vnútorné úvodzovky zdvojí. Ostatné hodnoty zostanú bez úvodzoviek.
- Pravidlo odovzdajte ako prvok poľa, ako vyššie, a nie vo vnútri reťazca pravidiel oddelených znakom |.
use RoundlyConsulting\Enums\Helpers;
enum Separator: string
{
use Helpers;
case Comma = 'a,b';
case Plain = 'c';
}
Separator::validationRule(); // 'in:"a,b",c'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.