ZF2空输入滤波器和数字验证器

时间:2014-02-19 10:41:45

标签: php validation zend-framework2

我有一个实现InputFilterAwareInterface的模型。对于其中一个字段,我希望验证用户输入是数字并使用空过滤器以确保db字段设置为null。有没有办法做到这一点?以下不起作用。

        $inputFilter->add(array(
            'name' => '_programme_id',
            'required' => false,
            'allow_empty' => true,
            'validators' => array(
                    array(
                            'name' => 'Digits',
                    )
            ),
            'filters' => array(
                    array(
                            'name' => 'Null',
                            'options' => array(
                                    'type' => 'all'
                            ),
                    )
            ),
        )
    );

验证失败,并显示消息“给定的类型无效。预期字符串,整数或浮点数”

似乎这是因为过滤在验证之前发生。有没有快速的方法来实现这种行为?

1 个答案:

答案 0 :(得分:2)

您可以使用Int过滤器将值转换为整数,然后将其传递给Null过滤器,如下所示:

$inputFilter->add(array(
            'name' => '_programme_id',
            'required' => false,
            'allow_empty' => true,
            'validators' => array(
                    array(
                            'name' => 'Digits',
                    )
            ),
            'filters' => array(
                    array(
                            'name' => 'Int',
                    )
                    array(
                            'name' => 'Null',
                            'options' => array(
                                    'type' => 'all'
                            ),
                    )
            ),
        )
    );