Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Walidacja ORM filters, rules i 'not_empty'
Forum PHP.pl > Forum > PHP > Frameworki
Kedan
Witam.

W momencie gdy w modelu uzytkownika, podczas walidacji $_POST, zahashuję sobie hasło nie działa reguła 'not_empty'. Po usunięciu zawarości metody filters() wszystko gra i buczy. Wygląda na to że filtry wywoływane są przed regułami; gdy w polu 'password' nie ma nic, to 'nic' jest hashowane, powstaje jakiś ciąg znaków i reguła 'not_empty' jest omijana.

Zna ktoś jakiś sprytne rozwiązanie?
skowron-line
To chyba coś sknociłeś skoro Ci haszuje przed ukończeniem validacji. Pokaż kawałek kodu.
Kedan
Wygląda na to że to jednak nie mój błąd: http://dev.kohanaframework.org/issues/3789#change-12827
Kohana po prostu tak ma. Rozwiązanie:
  1. public function filters()
  2. {
  3. return array(
  4. 'password' => array(
  5. array(array($this, 'filter_hash_password'))
  6. )
  7. );
  8. }
  9.  
  10. public function filter_hash_password($password_) {
  11. $result = FALSE;
  12. if(!(strlen($password_) < $this->_password_min_length)) {
  13. $result = Auth::instance()->hash($password_);
  14. }
  15. return $result;
  16. }


Jest i drugie rozwiązanie. Właśnie zauważyłem że w klasie Model_User_Auth jest metoda statyczna, którą najlepiej wywołać przed puszczeniem validacji:
  1. public static function get_password_validation($values)
  2. {
  3. return Validation::factory($values)
  4. ->rule('password', 'min_length', array(':value', 8))
  5. ->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
  6. }
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.