Zend Framework 2 - 过滤器

时间:2016-06-13 20:49:20

标签: zend-framework2

ZF2的新手,并尝试了解它的一些细微差别。

我有几个问题:

问题1

我正在使用配置来设置表单字段的输入过滤器(下面的示例)。当像这样在同一元素上有过滤器和验证器时,过滤后的数据是否会传递给验证器?所以在下面的例子中,如果我输入带有空白区域的“Hello world”,那么在验证器评估之前是否会从字符串中删除空白区域?

'name' => array(
            'required' => true,
            'filters'  => array(
                array('name' => 'Zend\Filter\StringTrim'),
            ),
            'validators' => array(
                array(
                    'name' => 'Zend\Validator\StringLength',
                    'options' => array(
                        'min' => 3,
                        'max' => 11
                    ),
                ),
            ),
        ),

问题2

我见过人们仅使用名称设置过滤器的示例,例如'strtolower'按照以下代码。我无法弄清楚的是,这个别名是否与ValidatorPluginManager中的验证器一样设置。为过滤器设置的别名在哪里?

    'name' => array(
            'required' => true,
            'filters'  => array(
                array('name' => 'strtolower'),
            ),
            'validators' => array( /*validator stuff*/),
        ),

真的很感激任何建议,因为我一直在努力解决这些问题。但是找不到这些问题的答案。

卷尾

2 个答案:

答案 0 :(得分:1)

问题1

是的,使用输入过滤器时,首先会在验证发生前过滤该值。

<强>问题2

查看FilterPluginManager可以用于“stock”过滤器的所有别名。

检查ValidatorPluginManager以获取验证器的概述。

答案 1 :(得分:0)

@BramGerritsen的回答是非常正确的,所以我对他进行了投票,但是这里有一些补充信息可以回答你的问题1

在特殊情况下,验证会在过滤之前发生。一个例子是the FileInput class。使用文件上传文件时,我们应该先验证文件,以便在任何可能重命名/移动/修改文件的过滤器之前进行任何验证...(查看链接)。
我可以想象其他人有自定义输入类,他们也这样做(我实际上有一些像我自己的类)。