Раньше у меня был этот элемент формы для проверки электронной почты и отображения сообщения об ошибке, если формат был недопустимым:
$email_users = new Zend_Form_Element_Text('email_users');
$email_users->setLabel('Email:')
->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress')
->setErrorMessages(array('messages' => 'Invalid Email'));
setErrorMessages работал нормально, потому что это была единственная проверка, которая мне была нужна, поэтому он заменил все сообщения об ошибках на мои собственные, теперь мне пришлось добавить еще одну проверку, чтобы увидеть, существует ли она уже в моей БД:
$email_users = new Zend_Form_Element_Text('email_users');
$email_users->setLabel('Email:')
->setRequired(false)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidators(array(
array('EmailAddress', true,
array(
'messages' =>
array(Zend_Validate_EmailAddress::INVALID => 'Invalid Email')
)
),
array('Db_NoRecordExists', true,
array(
'messages' =>
array(Zend_Validate_Db_NoRecordExists::ERROR_RECORD_FOUND => 'Email already exists'),
'table' => 'users',
'field' => 'email_users')
)));
Функциональность в порядке, проблема в том, что, когда адрес электронной почты недействителен, он теперь показывает мне сообщения проверки zend по умолчанию, но, когда он существует, он показывает мне мое настраиваемое сообщение. Есть ли способ таким образом заархивировать предыдущую функциональность? (Замена всех недействительных сообщений электронной почты) Я не могу использовать setErrorMessages, так как это показывает мне «недопустимый адрес электронной почты», когда адрес электронной почты существует.
Я попытался использовать 'messages' => 'Ошибка', но ничего не произошло (ошибок нет, но отображаются сообщения по умолчанию), я попробовал:
$ emailValidator = новый Zend_Validate_EmailAddress (); $ emailValidator-> setMessages ('Неверный адрес электронной почты');
И в моем элементе формы я добавил
$ email_users-> addValidator ($ emailValidator)
Ничего подобного. Ближайшее, что я получил, это 'messages' => array (Zend_Validate_EmailAddress :: INVALID_FORMAT => 'Invalid email'), это показывает сообщение, когда я набираю что-то вроде 'email @' или 'email', но если я набираю 'email @ host 'он показывает мне 3 ошибки относительно имени хоста, DNS и локальной сети, которые они не показывают, когда я использую setMessages (' Error ') (просто отображает' Error '),
Заранее спасибо.