5

我有以下问题。我(根据教程)编写了一个表单验证。文本字段工作得很好,但整数字段表现得很奇怪。

这是我的验证器:

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

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

有任何想法吗?谢谢!

4

3 回答 3

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,
                  ),
              ),
            ),
        )));
于 2012-12-18T11:22:51.213 回答
3

这是一个老话题,但我应该提一下,Filters不会导致验证错误,它们在后台工作并默默地完成工作。

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

于 2014-08-25T06:19:50.373 回答
1
 array(
                        'name' => 'not_empty',
                    ),
                    array(
                        'name' => 'Digits',
                    ), array(
                        'name' => 'Between',
                        'options' => array(
                            'min' => 0,
                            'max' => 1,
                        ),
                    ),
于 2016-11-28T07:26:05.493 回答