$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email:')
->addFilters(array('StringTrim', 'StripTags'))
->addValidator('EmailAddress')
->addValidator(new Zend_Validate_Db_NoRecordExists(
array(
'adapter'=>Zend_Registry::get('user_db'),
'field'=>'email',
'table'=>'tbl_user'
)))
->setRequired(true)
->setDecorators(array(
array('Label', array('escape'=>false, 'placement'=>'append')),
array('ViewHelper'),
array('Errors'),
array('Description',array('escape'=>false,'tag'=>'div')),
array('HtmlTag', array('tag' => 'div')),
));
$this->addElement($email);
现在的问题是,如果用户输入无效的邮件主机名,它会生成3个错误。比如说,如果用户输入'admin@l'作为电子邮件地址,那么错误将会是:
* 'l'不是电子邮件地址'admin@l'的有效主机名
* 'l'与DNS主机名的预期结构不匹配
* 'l'似乎是一个本地网络名称,但本地网络名称是不允许的。
我只想让它给出一个自定义错误,而不是所有这些错误。如果我通过addErrorMessage方法设置错误消息“无效的电子邮件地址”,它将再次针对db_validation生成相同的消息。