W Laravel 9.41, mamy teraz kilka wygodnych konstruktorów statycznych dodanych do rzeczy, takich jak reguły enum, pliki i pliki obrazów.
Możesz konstruować te obiekty reguł bezpośrednio, ale lubię wygodę wiedząc, że mam do nich dostęp za pośrednictwem konstruktorów statycznych na głównym Reguła
obiekt:
use Illuminate\Validation\Rules\Enum;
use Illuminate\Validation\Rules\File;
use Illuminate\Validation\Rules\ImageFile;
// Before
(new File())->default();
(new ImageFile())->dimensions(
Rule::dimensions()->maxWidth(1000)->maxHeight(500)
);
new Enum(PostStatus::class);
// As of 9.41
Rule::file()->default()
Rule::imageFile()->dimensions(
Rule::dimensions()->maxWidth(1000)->maxHeight(500)
);
Rule::enum(PostStatus::class);
Oto pełniejszy przykład, aby zobaczyć, jak wyglądają reguły sprawdzania poprawności przy użyciu main Reguła
metody statyczne klasy:
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Enum;
use Illuminate\Validation\Rules\Unique;
// Before
$request->validate([
'status' => [
'required',
new Enum(PostStatus::class)
],
'slug' => [
'required',
new Unique(Post::class);
],
]);
// After
$request->validate([
'status' => [
'required',
// Newly added in 9.41
Rule::enum(PostStatus::class)
],
'slug' => [
'required',
// Note: unique has been available for a while
Rule::unique(Post::class),
],
]);
Niektóre obiekty reguł nie mają przykładów w dokumentacji i uważam, że można je łatwiej wykryć za pomocą main Reguła
metody klasowe. Jeśli zajrzysz do klas reguł pod Illuminate\Walidacja\Reguły
namespace, w chwili pisania tego tekstu wygląda to tak:
- Reguła bazy danych
- Wymiary
- wylicz
- WykluczJeśli
- istnieje
- Plik
- Plik graficzny
- W
- pływanie
- Hasło
- Zabronione Jeśli
- WymaganeJeśli
- Jedyny w swoim rodzaju
I'd encourage you to dive into the source to learn more about these useful objects oraz how they work. The dokumenty walidacyjne zawierają pomocne przykłady wykorzystania niektórych z tych narzędzi do tworzenia reguł, takich jak Plik
and istnieje
żeby wymienić tylko kilka.