На самом деле, вы делаете следующее:
- Вы устанавливаете ошибки для элемента
- Зенд теперь думает, что элемент не прошел проверку корректно и что первыйошибка: «Вы должны ввести действительный адрес электронной почты»
- Когда вы отображаете форму, так как вы устанавливаете ошибки, Zend найдет их и отобразит первую найденную.Если вы измените порядок, то обнаружите, что любая ошибка, которую вы поставили сверху, будет ошибкой, которую вы получите.
Более правильный способ - установить пользовательские сообщения в валидаторе.При вызове валидаторов для проверки элемента, если проверка не удалась, валидатор вызовет setErrorMessages для элемента, чтобы установить пользовательские ошибки, которые вы укажете.Используйте этот тип кода ниже для установки своих пользовательских сообщений.
$element->addValidator( array( 'Db_NoRecordExists', true, array(
'messages' = array(
Zend_Validate_Db_Abstract::ERROR_NO_RECORD_FOUND => 'Myy custom no error record',
Zend_Validate_Db_Abstract::ERROR_RECORD_FOUND => 'My custom record error'
)
) ) );
Вы обнаружите, что обычно в каждом классе валидатора есть константы, которые указывают один тип ошибки.В этом случае константы находятся в родительском классе класса DB_NoRecordExists, но обычно вы найдете их непосредственно в классе рядом с вершиной.