Я смог заставить его работать со следующим кодом:
В своей форме я добавляю идентичный валидатор только на второй элемент:
$this->addElement('text', 'email', array(
'label' => 'Email address:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array('EmailAddress')
));
$this->addElement('text', 'verify_email', array(
'label' => 'Verify Email:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array('EmailAddress', 'Identical')
));
А в контроллере, прямо перед вызовом isValid()
:
$validator = $form->getElement('verify_email')->getValidator('identical');
$validator->setToken($this->_request->getPost('email'));
Я не знаю, есть ли более элегантный способ сделать это без добавления этого кода в контроллер. Дайте мне знать, если есть лучший способ сделать это.