我正在创建一个像这样的电子邮件表单元素(在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);
现在,当输入无效的电子邮件时,会出现很多消息:
'#' 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 '@#$@#'
我想知道,是否可以让它只发出我提供的错误信息,例如“请输入有效的电子邮件地址。”?
答案 0 :(得分:5)
最简单的方法是使用addErrorMessage()
为所有错误设置一条自定义消息。
在您的示例中,您可以将其添加到代码中并对其进行流畅调用,或添加行
$email->addErrorMessage('Dit e-mail adres is ongeldig.');
您还应该将第二个参数更改为addValidator,如下所示,一旦验证失败,则不会检查其他条件。
->addValidator('EmailAddress', true)
Reference Guide对此进行了解释,但不是很好。名称addErrorMessage
并不意味着它会覆盖默认消息,但您确实存在。
答案 1 :(得分:1)
你可以使用:
$email->addErrorMessage('Dit e-mail adres is ongeldig.');
$email->addValidator('EmailAddress', true);
或者您可以使用:
$email_validate = new Zend_Validate_EmailAddress();
$email_validate->setMessage("Your custom message");
$email->addValidator($email_validate ,TRUE);