Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [laravel] Validacja danych
Koldy
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

Ostrzeżenie: (0%)
-----


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


--------------------
$progress++;
Go to the top of the page
+Quote Post
memory
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


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

http://laravel.com/docs/5.0/validation
Go to the top of the page
+Quote Post
Koldy
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

Ostrzeżenie: (0%)
-----


nie sprecyzowalem, mowimy tu o wersji 4.2


--------------------
$progress++;
Go to the top of the page
+Quote Post
memory
post
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


http://culttt.com/2013/07/29/creating-lara...ation-services/
http://culttt.com/2014/01/13/advanced-vali...vice-laravel-4/
Go to the top of the page
+Quote Post
Koldy
post
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

Ostrzeżenie: (0%)
-----


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


--------------------
$progress++;
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Tadaam wink.gif https://github.com/JeffreyWay/Laravel-Model-Validation
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:52