Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [laravel] Validacja danych
Forum PHP.pl > Forum > PHP > Frameworki
Koldy
Witajcie,

chwile juz temu zaczalem pisac w laraverze, silnik bardzo mi sie spodobal i mysle ze komfort pracy jest wszystkim czego potrzebuje programista, wiec na razie nie zamierzam uciekac sie do innych opcji.

Mam pewien dylemat, bo problem to raczej nie jest.

Mianowicie, wiadomo ze validacje robimy w Laraverze tak:
  1. $validator = Validator::make($input, [
  2. 'email' => 'required|email',
  3. 'password' => 'required'
  4. ]);


ew. jeszcze messages jako 3 argument, ale ja mam ustawione custom messages w pliku jezykowym, co jest znacznie lepszym rozwiazaniem.

Chodzi o to, ze kod validacji np usera sie powtarza, nie zawsze wszystkie jego pola, ale zawsze cos sie powtarza, wiec wpadlem na pomysl zeby umiescic reguly w modelu, do ktorego walidacja nastepuje. np:
  1. public static $rules = [
  2. 'email' => 'required|max:50|email|unique:users',
  3. 'username' => 'sometimes|required|max:20|min:3|unique:users',
  4. 'password' => 'required|min:6',
  5. 'password2' => 'sometimes|required|same:password'
  6. ];

dodatkowo w modelu dodaje triata z metoda
  1. public static function validate($input) {
  2. return \Validator::make($input, (isset(self::$rules)) ? self::$rules : []);
  3. }


Wiec kod w konrolerze wyglada mniej wiecej tak:
  1. $input = Input::only('email', 'username', 'password', 'password2');
  2. $validator = User::validate($input);


Dzieki temu, sprawdzane sa tylko te wartosci ktore zostaly przekazane, z racji reguly 'sometimes', wszystko dziala ok, ale doszedlem do wniosku, ze po pierwsze lece na statykach, a dwa validacja nie koniecznie jest czescia modelu, wiec wymyslilem rozwiazanie zeby stworzyc osobna klase, ktora wepcham do serwisow, w wdziecznej nazwie Validator, a jej uzycie w kontrolerze bylo by mniej wiecej takie:
  1. $validator = Validator::user($input);


Cala validacja byla by zamknieta w klacie Validator i nie opieralaby sie na statykach, jednoczesnie mamy cala validacje aplikacji w jednym miejscu.

Pytanie wiec do expertow, czy dobrze kombinuje, czy moze lepiej zostawic to w modelu jak zrobilem na poczatku, a moze jeszcze macie jakies inne magiczne rozwiazanie?

Pozdrawiam
memory
Przecież takie magiczne rozwiązania są już wbudowane w laravel

http://laravel.com/docs/5.0/validation
Koldy
nie sprecyzowalem, mowimy tu o wersji 4.2
Koldy
Nie do konca spasowala mi jego metoda (mowie o tym advanced, bo ten pierwszy to w ogole slabo), wiec troche zmanipuluje to co on tam daje i minimalnie zrobie po swojemu, ale naprowadzilo mnie to do celu, takze dzieki, dodatkowo kolejny blog do rss'a smile.gif

Lap plusa, jeszcze raz dzieki
Pyton_000
Tadaam wink.gif https://github.com/JeffreyWay/Laravel-Model-Validation
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.