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

标签 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%')
                            )
                        )
                    )
                )
            )
        );

最佳答案

使用 zend validator 的第二个参数来破坏验证器链并返回错误, breakChainOnFailure ( documentation ) 告诉元素如果触发此错误则停止验证,因此在您的情况下如果它不是数字,用户会收到错误,当用户修复错误后,第二个验证器也会被触发:

$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_Int ( docmentation ),具体取决于用户输入无效数据时您希望向用户提供的错误消息。当然,正如评论中所建议的,如果您想要通过自行修复来处理任何无效数据并且不向用户提供关于他做错了什么的反馈,您也可以使用 Zend_Filter_Int 。 p>

关于validation - Zend Framework Validate 字段是 1 到 5 之间的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807838/

相关文章:

javascript - 提交时的文本框被删除了吗?

validation - "chain of responsibity"是适合验证的设计模式吗?

php - CMS 和框架有什么区别?以及如何根据某些要求在它们之间进行选择?

zend-framework - Zend 框架 : How to 301 redirect old routes to new custom routes?

php - 过滤、存储到数据库并输出文本区域的文本? Zend 框架 2.3.5

php - 为什么在电子邮件中传递 LINUX 命令时我的 catch block 不起作用?

php - Zend Form Hydrator 类方法未正确绑定(bind)到对象实体的问题

c# - 使用 DataAnnotations 和 DataType 进行电子邮件模型验证

php - jQuery 发布和获取表单数据

zend-framework - 如何获得Doctrine2结果对象作为关联数组?