Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kohana walidacja
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam, z dokumentacji wiem że regex w walidacji w Kohanie to zwykły preg_match. Nie znalazłem funkcji w rule do porównywania wartości z pola i wartości np. z configu (matches porównuje 2 pola ale już z poza nie). Toteż zrobiłem regexem metodę, która powinna śmigać (porównanie pola z wartością z configu)

  1.  
  2. $post = Validation::factory($_POST)
  3. ->rule("password", "not_empty")
  4. ->rule("password", "regex", array("/^".$config["password"]."$/"));
  5.  


Jednak interpreter krzyczy że Missing argument 2 for Kohana_Valid::regex(). Jaki błąd popełniłem?

Pozdrawiam
sabat24
W kohanie 3.2+ nie dałeś pierwszego parametru, którym w tym wypadku powinno być :value, czyli pseudo-zmienna zawierająca wartość pola. Reguła powinna ogólnie wyglądać tak:
  1. ->rule('password', 'regex', array(':value', "Twoje_wyrazenie_regularne"))

Chociaż moim zdaniem lepiej byłoby zastosować własną funkcję albo użyć metody in_array.
MateuszS
Właśnie, a jak do tej własnej funkcji przekazać parametry (np oba hasła)?

  1. $post->rule('password', array($model, 'funkcja'));
sabat24

Mam teraz ograniczony dostęp do testowania rozwiązań pod kohaną, ale poniższa, standardowa reguła działa na takiej zasadzie, jaką chyba chcesz osiągnąć.

  1. ->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));


:validation zawiera tablicę wszystkich pól i przekazuje to do wbudowanej funkcji matches, która wygląda tak:
  1. public static function matches($array, $field, $match)
  2. {
  3. return ($array[$field] === $array[$match]);
  4. }

Wystarczy, że na tym przykładzie oprzesz swoją funkcję, a ogólnie różne wersje zastosowania callbacków znajdziesz tutaj: blog.lysender.com/2011/02/kohana-3-1-validation-adventures/

Prawdopodobnie działający przykład może wyglądać tak:
  1. ->rule('password', array($model, 'funkcja_w_modelu'), array(':validation'));

Tuminure
A czy funkcja equals nie załatwiłaby po prostu sprawy, zamiast bawić się w tego regexpa wink.gif?
  1. ->rule('password', 'equals', array(':value', $config["password"]));
MateuszS
Faktycznie tak działa. Kombinowałem bo nie znalazłem tej funkcji w dokumentacji a takiej reguły właśnie tam brakowało aż dziwne:
http://kohanaframework.org/3.2/guide/kohan...rity/validation
Niestety trochę niekompletna ona jest. Dzieki
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.