Раньше у меня был этот элемент формы для проверки электронной почты и отображения сообщения об ошибке, если формат был неверным:
$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» => «Error», но ничего не происходит (ошибок нетно сообщения по умолчанию показывают), я попытался:
$ emailValidator = new Zend_Validate_EmailAddress ();$ emailValidator-> setMessages ('Invalid email');
И в свой элемент формы я добавил
$ email_users-> addValidator ($ emailValidator)
Ничего не получилось.Самое близкое, что я получил, - это массив 'messages' => (Zend_Validate_EmailAddress :: INVALID_FORMAT => 'Invalid email'), который показывает сообщение, когда я набираю что-то вроде 'email @' или 'email', но если я набираю 'email @ host«он показывает мне 3 ошибки в отношении имени хоста, DNS и локальной сети, которые они не показывают, когда я использую setMessages (« Ошибка ») (просто отображает« Ошибка »),
Заранее спасибо.