使zend EmailAddress表单验证器只返回一个自定义错误消息

Tom*_*Tom 4 php validation zend-framework

我正在创建一个像这样的电子邮件表单元素(在Zend表单中):

//create e-mail element
$email = $this->createElement('text', 'username')
              ->setLabel('E-mail:')
              ->setRequired(true)
              ->addFilters(array('StringTrim', 'StringToLower'))
              ->addValidator('EmailAddress', false, array(
                    'messages' => array(
                        Zend_Validate_EmailAddress::INVALID => 'Dit e-mail adres is ongeldig.',
                    )
              ));
//add element
$this->addElement($email);
Run Code Online (Sandbox Code Playgroud)

现在,当输入无效的电子邮件时,会出现很多消息:

'#' is no valid hostname for email address '@#$@#'
'#' does not match the expected structure for a DNS hostname
'#' does not appear to be a valid local network name
'@#$' can not be matched against dot-atom format
'@#$' can not be matched against quoted-string format
'@#$' is no valid local part for email address '@#$@#'
Run Code Online (Sandbox Code Playgroud)

我想知道,是否可以让它只发出我提供的错误信息,例如"请输入有效的电子邮件地址".

Dav*_*unt 5

最简单的方法是使用addErrorMessage()为所有错误设置单个自定义消息.

在您的示例中,您可以将其添加到代码中并以流畅方式调用它,或添加该行

$email->addErrorMessage('Dit e-mail adres is ongeldig.');
Run Code Online (Sandbox Code Playgroud)

您还应该将第二个参数更改为addValidator,如下所示,一旦验证失败,则不会检查其他条件.

->addValidator('EmailAddress', true)
Run Code Online (Sandbox Code Playgroud)

" 参考指南"对此进行了解释,但不是很好.该名称addErrorMessage并不意味着它将覆盖默认消息,但您有.