ZF2 - Need to display specific error message on specific condition failure

别说谁变了你拦得住时间么 提交于 2019-12-14 03:52:01

问题


I am using ZF2 form validation.I have to validate two fields USERNAME and PASSWORD. everything is working fine but I am getting message like

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

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

If user is not entering any value then only this message should display

Please enter username.    
Please enter password.

I don't want do display all the error messages on a field on failure.

Thanks in advance.


回答1:


I got the answer : In order to break the validation chain in ZF2 , we have to use

'break_chain_on_failure' => true

$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
            )
        )
    )
);

My Blog : http://programming-tips.in




回答2:


Zend_Validate allow you to break validators chain if certain vaildation fails. The second parameter of addValidator() function $breakChainOnFailure should be TRUE in this case.

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



回答3:


You can also set the 'error_message' key, for example:

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


来源:https://stackoverflow.com/questions/15677863/zf2-need-to-display-specific-error-message-on-specific-condition-failure

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!