chcę napisać własny walidator, który sprawdzałby czy w dwóch polach formularza podano dwie takie same wartości. Chcę to zastosować oczywiście przy rejestracji, kiedy user będzie ustawiał swoje hasło do systemu.
Tak więc utworzyłem własny walidator o nazwie TheSameValue. Przykładowy formularz wykorzystujący ten walidator wygląda tak (pokazuje tylko najistotniejszy fragment):
$password_repeat = new Zend_Form_Element_Password('password_repeat'); $password_repeat->setLabel('Powtórz hasło:') ->setRequired(true) $password = new Zend_Form_Element_Password('password'); $password->setLabel('Hasło:') ->setRequired(true) ->addValidator(new Zend_Validate_TheSameValue($password_repeat));
Jak widać, w ostatniej linijce przekazuje mój walidator. Do konstruktora podałem drugie pole na hasło.
Na razie w walidatorze zająłem się wyświetlaniem danych. Jednak to mam problem.
public function __construct($value_repeat_ob) { $this->value_repeat_ob = $value_repeat_ob; } public function isValid($value) { }
Problem pojawia się w metodzie isValid(): kiedy przysyłam w formularzu jakieś wartości to
zwraca mi NULL'a.
Dlaczego tak się dzieje? W jaki sposób mogę dobrać się do wartości drugiego pola?
Pozdrawiam