2013-03-28 137 views
3

我正在使用ZF2表单验证。我必须验证两个字段USERNAME和PASSWORD。 一切工作正常,但我喜欢ZF2-需要在特定条件失败时显示特定错误消息

Please enter username. 
Username can not be less than 3 characters. 

Please enter password. 
Password can not be less than 6 characters. 

获取消息。如果用户没有输入任何值,则仅此消息应显示

Please enter username.  
Please enter password. 

我不想做显示所有的错误信息一个失败的领域。

在此先感谢。

回答

6

我得到了答案: 为了打破验证链ZF2,我们必须使用

'break_chain_on_failure'=>真

$this->add(
    array(
     'name'  => 'usernmae', 
     'required' => true, 
     'filters' => array(
      array('name' => 'Zend\Filter\StringTrim') 
     ), 
     'validators' => array(
          array('name' => 'NotEmpty', 
          'options' => array('encoding' => 'UTF-8', 
           'messages' => array(
            NotEmpty::IS_EMPTY => 'Please enter username')), 
          'break_chain_on_failure' => true), 
      array(
       'name' => 'Zend\Validator\StringLength', 
       'options' => array(
        'encoding' => 'UTF-8', 
        'min'  => 3, 
        'max'  => 30, 
        'messages' => array(
            StringLength::TOO_LONG => 'Username can not be more than 30 characters long', 
            StringLength::TOO_SHORT => 'Username can not be less than 3 characters.') 
       ), 
       'break_chain_on_failure' => true 
      ) 
     ) 
    ) 
); 

我的博客:http://programming-tips.in

+0

这个万岁'break_chain_on_failure'! – David 2016-02-08 20:44:21

1

Zend_Validate允许您在某些验证失败时打断验证器链。在这种情况下,addValidator()函数$ breakChainOnFailure的第二个参数应该为TRUE。

$validatorChain = new Zend_Validate();  
$validatorChain->addValidator(new Zend_Validate_NotEmpty(), TRUE) 
       ->addValidator(new Zend_Validate_StringLength(6, 12)); 
+0

感谢您的回复@Zavg ...但我需要Zend Framework 2 – Arvind 2013-03-28 10:06:54

0

您也可以设置'error_message'键,例如:

'email' => [ 
       'required' => true, 
       'error_message' => 'Incorrect email address ', 
       'filters' => [ 
        [ 
         'name' => 'StripTags', 
        ], 
        [ 
         'name' => 'StringToLower', 
        ] 
       ], 
       'validators' => [ 
        [ 
         'name' => 'EmailAddress', 
         'break_chain_on_failure' => true 
        ] 
       ] 
      ], 
相关问题