Reguły Tylko W Przypadku Ich Wymagania

Witam. Ostatnio zrobiłem porządek z kilkudziesięcioma regułami, lecz nie działa to tak jak chce. Mam przykładowo taką regułę:


array('password', 'match', 'pattern'=>'/^.*(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/', 'message'=>'Hasło jest nieprawidłowe.'),

oraz dla scenariusza userEdit:


array('email, name, surname', 'required', 'on' => 'userEdit'), 

Oczekiwałem że skoro pole w scenariuszu userEdit nie jest wymagane to nie będzie sprawdzane z patternem. Jednak gdy użytkownik próbuje zmienić dane, to wyskakuje ‘Hasło jest nieprawidłowe.’. Przerabianie wszystkich reguł na ‘on’ jest głupie, ponieważ mam dla modelu użytkownika aż 8 scenariusz i przy każdej zmianie kod się gmatwa.

Czy jest na to jakiś sposób żeby tylko pola wymagane były walidowane??

W wersji 1.1.13 do reguł walidatorów dodano właściwość ‘except’. Użyj jej np. w regule do hasła:




array('password', 'match', 'pattern'=>'/^.*(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/', 'message'=>'Hasło jest nieprawidłowe.', 'except'=>'userEdit'),



BTW co do komunikatu, moim zdaniem powinień być bardziej informacyjny, tzn zasugerować dlaczego hasło jest nieprawidłowe. Jako użytkownik nie wiedziałbym co mam z tym zrobić. No chyba, że jest to napisane gdzieś obok pola.