Zend Framework Validate字段是1到5之间的整数

时间:2013-07-23 10:40:03

标签: validation zend-framework zend-framework2 zend-form

我使用Zend \ InputFilter \ InputFilter类进行表单验证。 point 字段应该只接受介于1和5之间的整数。但它不能正常工作它接受以1到5之间的整数开头的字符串。例如1kjhkjh,2tgfjhgfjhf,4jhkljg ... 我的代码出了什么问题?

$inputFilter->add (
            $inputFilter->getFactory()->createInput (
                array (
                    'name' => 'point',
                    'required' => true,
                    'validators' => array ( 
                        array(
                            'name' => 'Digits'),    
                        array (
                            'name' => 'Between',
                            'options' => array (
                                'min' => 1,
                                'max' => 5,
                                'messages' => array('notBetween' => 'Point must be between %min% and %max%')
                            )
                        )
                    )
                )
            )
        );

2 个答案:

答案 0 :(得分:3)

使用zend验证器的第二个参数来中断验证器链并返回错误,breakChainOnFailuredocumentation)告诉元素停止验证是否触发了此错误,因此在您的情况下如果它不是用户得到错误的数字,当用户修复错误时,第二个验证器也会被触发:

$inputFilter->add (
            $inputFilter->getFactory()->createInput (
                array (
                    'name' => 'point',
                    'required' => true,
                    'validators' => array ( 
                        array(
                            'name' => 'Digits', 'breakChainOnFailure' => true),    
                        array (
                            'name' => 'Between',
                            'options' => array (
                                'min' => 1,
                                'max' => 5,
                                'messages' => array('notBetween' => 'Point must be between %min% and %max%')
                            )
                        )
                    )
                )
            )
        );

另一种选择是将Zend_Validate_Digits替换为Zend_Validate_Intdocmentation),具体取决于您输入非有效数据时您希望向用户提供的错误消息。当然,正如评论中所建议的那样,如果您想要的是通过自己修复它来处理任何无效数据,并且不向用户提供有关他做错了什么的反馈,那么您也可以使用Zend_Filter_Int

答案 1 :(得分:0)

'breakChainOnFailure': true

应该是

'breakChainOnFailure'=> true