SlideShare a Scribd company logo
1 of 29
Download to read offline
Walidacja w Laravelu
Hubert Sitarski
Team Leader/Fullstack Developer
huberts@highsolutions.pl
Zdjęcie
Walidacja - wstęp
● Szeroka gama rozwiązań
● Rozbudowane reguły walidacji
● Prosta implementacja
● Możliwość pisania własnych walidatorów
Podstawowe użycie
Walidacja - Podstawowe użycie
● Automatyczne przekierowanie na poprzednią stronę
● Zmienna $errors (IlluminateSupportMessageBag) przekazywana w
sesji do widoku
Walidacja - Podstawowe użycie
● Brak przekierowania
● Własna obsługa błędów
Walidacja - Podstawowe użycie
● Przypisanie walidatora do zmiennej
● Własna obsługa błędów
Zaawansowane użycie (Form Request)
Walidacja - Zaawansowane użycie
● Wyciągnięcie logiki z controllera do osobnej klasy
● Większy porządek w kodzie
● Reużywalność
● Więcej opcji w porównaniu do standardowego
podejścia
Walidacja - Zaawansowane użycie
Walidacja - Zaawansowane użycie
● Metoda authorize pozwala na określenie czy dany użytkownik może wykonywać operacje na danym Form
Requestcie
● Dostęp do zmiennych, które przekazujemy w ścieżce np. (Route::post('/comment/{comment}');
● Jeśli metoda authorize zwróci false, odpowiedź HTTP z kodem 403 zostanie automatyczna zwrócona a your
metoda controllera nie wykona się.
Walidacja - Zaawansowane użycie
● Funkcja rules() służy do zdefiniowania wszystkich reguł walidacji, które
mają zostać użyte w przypadku danego żądania
Walidacja - Zaawansowane użycie
● preapreForValidation() umożliwia modyfikację danej wartości przed
walidacją
Walidacja - Zaawansowane użycie
Walidacja - Zaawansowane użycie
Obsługa błędów
Walidacja - Obsługa błędów (Blade)
Walidacja - Obsługa błędów
Tłumaczenia i niestandardowe
wiadomości
Walidacja - Tłumaczenia i niestandardowe wiadomości
Każda z Laravelowych reguł walidacji posiada komunikat o błędzie, który
znajduje się w pliku resources/lang/en/validation.php
Komunikaty mogą być dowolnie modyfikowane dla danego języka poprzez
skopiowanie pliku do katalogu odpowiadającemu danemu językowi i
modyfikację jego zawartości
(np. resources/lang/pl/validation.php)
Walidacja - Tłumaczenia i niestandardowe wiadomości
Walidacja - Tłumaczenia i niestandardowe wiadomości
● Niestandardowa wiadomość dla konkretnego pola
● Możliwość definiowania niestandardowych wiadomości dla
wielu różnych zasad
Walidacja - Tłumaczenia i niestandardowe wiadomości
● Wiadomości walidacji czasami używają argumentu :attribute, który jest nazwą
walidowanego pola
● Istnieje możliwość zmiany nazwy walidowanego pola
The email field is required. -> The email address field is required
Walidacja - Tłumaczenia i niestandardowe wiadomości
● Wiadomości walidacji czasami używają argumentu :value, który jest wartością
walidowanego pola
● Istnieje możliwość zmiany nazwy wartości walidowanego pola
The credit card number field is required when payment type is cc.
-> The credit card number field is required when payment type is credit
Walidacja - Tłumaczenia i niestandardowe wiadomości
● W przypadku tworzenia własnego walidatora, istnieje możliwość zdefiniowania
customowych wiadomości “w locie”
Własne reguły walidacji
Walidacja - Własne reguły
● Funkcja passes() zawiera nazwę i wartość atrybutu - tu
znajduje się logika walidacji
● Funkcja message() - zwraca wiadomość w przypadku
nieprawidłowej walidacji, może być dowolnie
tłumaczona
Walidacja - Własne reguły
● Dynamiczne reguły walidacji mogą być dowolnie tworzone za pomocą funkcji
anonimowych
● $fail - callback wywoływany w przypadku niespełnienia warunków walidacji
Pytania?
huberts@highsolutions.pl
Hubert Sitarski

More Related Content

More from Laravel Poland MeetUp

Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaLaravel Poland MeetUp
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Poland MeetUp
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Poland MeetUp
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPLaravel Poland MeetUp
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelLaravel Poland MeetUp
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Poland MeetUp
 
Speed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerSpeed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerLaravel Poland MeetUp
 
Przetwarzanie Asynchroniczne i Promises w Laravel
Przetwarzanie Asynchroniczne i Promises w LaravelPrzetwarzanie Asynchroniczne i Promises w Laravel
Przetwarzanie Asynchroniczne i Promises w LaravelLaravel Poland MeetUp
 
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Jak stworzyliśmy system kudosów w Laravelu i SlackuJak stworzyliśmy system kudosów w Laravelu i Slacku
Jak stworzyliśmy system kudosów w Laravelu i SlackuLaravel Poland MeetUp
 

More from Laravel Poland MeetUp (20)

Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
Przegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do LaravelaPrzegląd najciekawszych wtyczek do Laravela
Przegląd najciekawszych wtyczek do Laravela
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 
Laravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2ELaravel Dusk - prosty przepis na testy E2E
Laravel Dusk - prosty przepis na testy E2E
 
Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?Laravel Octane - czy na pewno taki szybki?
Laravel Octane - czy na pewno taki szybki?
 
Laravel Jobs i PHP8
Laravel Jobs i PHP8Laravel Jobs i PHP8
Laravel Jobs i PHP8
 
Wszystko o Laravel Livewire
Wszystko o Laravel Livewire Wszystko o Laravel Livewire
Wszystko o Laravel Livewire
 
Laravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFamiLaravel/PHP - zderzenie z PDFami
Laravel/PHP - zderzenie z PDFami
 
Action-based Laravel
Action-based LaravelAction-based Laravel
Action-based Laravel
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w LaravelWstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
 
Laravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydachLaravel Collection - tablice na sterydach
Laravel Collection - tablice na sterydach
 
Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?
 
AOP w Laravel
AOP w LaravelAOP w Laravel
AOP w Laravel
 
Speed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using DockerSpeed up web API with Laravel and Swoole using Docker
Speed up web API with Laravel and Swoole using Docker
 
Laravel 6.0 - co nowego?
Laravel 6.0 - co nowego?Laravel 6.0 - co nowego?
Laravel 6.0 - co nowego?
 
Przetwarzanie Asynchroniczne i Promises w Laravel
Przetwarzanie Asynchroniczne i Promises w LaravelPrzetwarzanie Asynchroniczne i Promises w Laravel
Przetwarzanie Asynchroniczne i Promises w Laravel
 
KPI w projektach IT
KPI w projektach ITKPI w projektach IT
KPI w projektach IT
 
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Jak stworzyliśmy system kudosów w Laravelu i SlackuJak stworzyliśmy system kudosów w Laravelu i Slacku
Jak stworzyliśmy system kudosów w Laravelu i Slacku
 
Mikrousługi w allegro
Mikrousługi w allegroMikrousługi w allegro
Mikrousługi w allegro
 

Walidacja w Laravelu

  • 2. Hubert Sitarski Team Leader/Fullstack Developer huberts@highsolutions.pl Zdjęcie
  • 3. Walidacja - wstęp ● Szeroka gama rozwiązań ● Rozbudowane reguły walidacji ● Prosta implementacja ● Możliwość pisania własnych walidatorów
  • 5. Walidacja - Podstawowe użycie ● Automatyczne przekierowanie na poprzednią stronę ● Zmienna $errors (IlluminateSupportMessageBag) przekazywana w sesji do widoku
  • 6. Walidacja - Podstawowe użycie ● Brak przekierowania ● Własna obsługa błędów
  • 7. Walidacja - Podstawowe użycie ● Przypisanie walidatora do zmiennej ● Własna obsługa błędów
  • 9. Walidacja - Zaawansowane użycie ● Wyciągnięcie logiki z controllera do osobnej klasy ● Większy porządek w kodzie ● Reużywalność ● Więcej opcji w porównaniu do standardowego podejścia
  • 11. Walidacja - Zaawansowane użycie ● Metoda authorize pozwala na określenie czy dany użytkownik może wykonywać operacje na danym Form Requestcie ● Dostęp do zmiennych, które przekazujemy w ścieżce np. (Route::post('/comment/{comment}'); ● Jeśli metoda authorize zwróci false, odpowiedź HTTP z kodem 403 zostanie automatyczna zwrócona a your metoda controllera nie wykona się.
  • 12. Walidacja - Zaawansowane użycie ● Funkcja rules() służy do zdefiniowania wszystkich reguł walidacji, które mają zostać użyte w przypadku danego żądania
  • 13. Walidacja - Zaawansowane użycie ● preapreForValidation() umożliwia modyfikację danej wartości przed walidacją
  • 17. Walidacja - Obsługa błędów (Blade)
  • 18. Walidacja - Obsługa błędów
  • 20. Walidacja - Tłumaczenia i niestandardowe wiadomości Każda z Laravelowych reguł walidacji posiada komunikat o błędzie, który znajduje się w pliku resources/lang/en/validation.php Komunikaty mogą być dowolnie modyfikowane dla danego języka poprzez skopiowanie pliku do katalogu odpowiadającemu danemu językowi i modyfikację jego zawartości (np. resources/lang/pl/validation.php)
  • 21. Walidacja - Tłumaczenia i niestandardowe wiadomości
  • 22. Walidacja - Tłumaczenia i niestandardowe wiadomości ● Niestandardowa wiadomość dla konkretnego pola ● Możliwość definiowania niestandardowych wiadomości dla wielu różnych zasad
  • 23. Walidacja - Tłumaczenia i niestandardowe wiadomości ● Wiadomości walidacji czasami używają argumentu :attribute, który jest nazwą walidowanego pola ● Istnieje możliwość zmiany nazwy walidowanego pola The email field is required. -> The email address field is required
  • 24. Walidacja - Tłumaczenia i niestandardowe wiadomości ● Wiadomości walidacji czasami używają argumentu :value, który jest wartością walidowanego pola ● Istnieje możliwość zmiany nazwy wartości walidowanego pola The credit card number field is required when payment type is cc. -> The credit card number field is required when payment type is credit
  • 25. Walidacja - Tłumaczenia i niestandardowe wiadomości ● W przypadku tworzenia własnego walidatora, istnieje możliwość zdefiniowania customowych wiadomości “w locie”
  • 27. Walidacja - Własne reguły ● Funkcja passes() zawiera nazwę i wartość atrybutu - tu znajduje się logika walidacji ● Funkcja message() - zwraca wiadomość w przypadku nieprawidłowej walidacji, może być dowolnie tłumaczona
  • 28. Walidacja - Własne reguły ● Dynamiczne reguły walidacji mogą być dowolnie tworzone za pomocą funkcji anonimowych ● $fail - callback wywoływany w przypadku niespełnienia warunków walidacji