2011-04-03 142 views
0

我有以下代码Zend Framework的输入验证消息

$validators = array(
     'name' => array('NotEmpty', 
         'messages' => 'A valid name is required' 
     ), 

     'email'=> array(
      new Zend_Validate_Regex("^[a-z0-9]+[a-z0-9_-]*(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+) *\.([a-z]+){2,}$^"), 
      'messages' => array('A valid email is required', 
       Zend_Validate_Regex::NOT_MATCH=>'The email is not valid',) 
     )) 

,当我检查的isValid和双方的姓名和电子邮件是空的,我得到两个“需要一个有效的名称”

结果看起来像

Array 
(
    [name] => Array 
     (
      [isEmpty] => A valid name is required 
     ) 

    [email] => Array 
     (
      [isEmpty] => A valid name is required 
     ) 

) 

所以我的问题是如何使两个都是空的情况下获得所需的每个消息?我还需要电子邮件验证才能正常工作并显示正确的消息。 在此先感谢。

回答

1

对于正确的电子邮件验证,您可以使用built-in email validator。所以,当你创建你的表单元素,你可以指定验证:

$email = new Zend_Form_Element_Text('email'); 
$email->setDecorators($this->elementDecorators) 
     ->setLabel('Email') 
     ->setRequired(true) 
     ->addValidator('EmailAddress') 
     ->setFilters(array('StringTrim','StringToLower')); 

您也可以指定地址错误信息:然后

$email->setErrorMessages(array(
     'err1' => 'Error1', 
     'err2' => 'Error2' 
)); 

Zend_Form的回音必正确的错误信息给你。

+0

问题是我没有使用Zend_Form,我只是需要简单的表单验证,谢谢。 – Centurion 2011-04-03 16:22:26

+0

为什么不呢? Zend_Form使得它很简单地处理表单。然而,在你的代码中,你似乎只设置了一个验证器,但你需要两个验证器。尝试将它们分开。你可以尝试静态验证器,Zend_Validate :: is($ email,'EmailAddress') – 2011-04-04 05:01:38

0
$validator = new Zend_Validate_EmailAddress(); 
$validator->setMessage(
    'A valid email is required', 
    Zend_Validate_EmailAddress::INVALID 
);