Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny] Laravel 5.4 - własna reguła walidacyjna
michau85
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

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


Hej.
Jestem początkujący w Laravel i mam problem przy tworzeniu własnej reguły walidacyjnej. Chcę stworzyć regułę podobną do wbudowanej 'required', w której błąd ma się pojawiać gdy pole formularza jest puste. Zgodnie z dokumentacją regułę dodaje w klasie AppServiceProvider tak jak poniżej:
  1. Validator::extend('wymagane', function ($attribute, $value, $parameters, $validator) {
  2. $data = $validator->getData();
  3. if (is_null($data['email'])==false) {
  4. return true;
  5. }
  6. else {
  7. return false;
  8. }
  9.  

Niestety komunikat się nie poajwia. Próbowałem już różnych kombinacji z empty() i isset() i wciąż bez skutku. Pomóżcie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Idealny przyklad jak mozna skomplikowac banalny warunek logiczny

Nie:

  1. if (is_null($data['email'])==false) {
  2. return true;
  3. }
  4. else {
  5. return false;
  6. }


a poprostu

  1. return empty($data['email']);


Tudziez
  1. return !empty($data['email']);


W zaleznosc co to ma zwraca by sie wlaczyl walidator - nie chce mi sie czytac dokumentacji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michau85
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

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


Twój sposób nie działa. Komunikat pojawia się wtedy kiedy nie trzeba - gdy pole jest wypełnione. Niestety temat ten w dokumentacji opisany jest bardzo powierzchownie.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podalem ci dwie wersje kodu. Sprawdzales dla obu?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michau85
post
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

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


Tak. Niezależnie od tego czy zastosuje wykrzyknik czy nie efekt jest taki jak napisałem.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Czyli niezaleznie czy zwracasz TRUE czy FALSE to walidator dziala do dupy. W takim razie moze to byc wina tego jak go podpiales a nie kodu w srodku. Co nie zmienia faktu, ze poprawka ktora ci wrzucilem powinna zostac, bo twoje "milion" linijek zamiast jednej niczemu nie sluzy wink.gif
2) Dla pewnosci sprawdz jeszcze co zawiera $data wewnatrz twojej funkcji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michau85
post
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

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


Znalazłem rozwiązanie jak dokładniej wczytałem się w dokumentację. Dla reguł sprawdzających czy zmienna jest pusta powinna być zastosowana inna metoda. ZamiastValidator::extend() powinienem użyć Validator::extendImplicit()
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: 21.08.2025 - 06:09