Zend Framework 2 - 整数表单验证

时间:2012-12-18 10:36:46

标签: php validation zend-framework2

我遇到了以下问题。我写了(基于教程)表单验证。文本字段工作正常,但整数字段表现奇怪。

这是我的验证员:

        $inputFilter->add($factory->createInput(array(
            'name'     => 'zip',
            'required' => false,
            'filters'  => array(
                array('name' => 'Int'),
            ),
        )));

它位于我的Entity.php中,就像其他过滤器一样。奇怪的是,当我将它设置为required时,这个甚至不接受字符串而忽略true。我尝试将Int替换为Digits,然后导致表单接受required但仍接受字符串。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:10)

尝试使用Between验证程序:

$inputFilter->add($factory->createInput(array(
            'name'     => 'zip',
            'required' => true,
            'filters'  => array(
                array('name' => 'Int'),
            ),
            'validators' => array(
              array(
                  'name' => 'Between',
                  'options' => array(
                      'min' => 1,
                      'max' => 1000,
                  ),
              ),
            ),
        )));

答案 1 :(得分:3)

这是一个古老的主题,但我应该提到Filters不会导致验证错误,它们在后台工作并以静默方式完成工作。

例如Int过滤器将从输入中删除任何非整数,因此当您执行$form->getData()时,具有Int过滤器的字段将只有整数值,如果为空,则为0

答案 2 :(得分:1)

 array(
                        'name' => 'not_empty',
                    ),
                    array(
                        'name' => 'Digits',
                    ), array(
                        'name' => 'Between',
                        'options' => array(
                            'min' => 0,
                            'max' => 1,
                        ),
                    ),