ZF2 - 需要在特定条件失败时显示特定错误消息

时间:2013-03-28 09:08:34

标签: php zend-framework2

我正在使用ZF2表单验证。我必须验证两个字段USERNAME和PASSWORD。 一切都很好,但我得到的消息像

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.

我不想在失败的字段上显示所有错误消息。

提前致谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果某些验证失败,Zend_Validate允许您破坏验证器链。 addValidator()函数的第二个参数$ blockChain在这种情况下失败应为TRUE。

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

答案 2 :(得分:0)

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

<script>