Zend Framework 2 - 过滤器

Zend Framework 2 - filters

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

我有几个问题:

问题 1

我正在使用配置来设置表单域的输入过滤器(如下例)。当你在同一个元素上有一个过滤器和一个验证器时,过滤后的数据会传递给验证器吗?因此,在下面的示例中,如果我输入带有大量白色 space 的“Hello world”,那么白色 space 是否会在验证器对其求值之前从字符串中删除?

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

问题二

我见过人们仅使用名称设置过滤器的示例,例如'strtolower' 根据以下代码。我想不通的是这个别名是否设置在某个地方,比如 ValidatorPluginManager 中的验证器。过滤器的别名在哪里设置?

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

非常感谢任何建议,因为我一直在处理码头,但找不到这些问题的答案。

回旋曲

问题一

是的,当使用输入过滤器时,将首先过滤值,然后再进行验证。

问题2

查看 FilterPluginManager 以了解可用于 "stock" 过滤器的所有别名。

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

@BramGerritsen 的回答非常正确,所以我赞成他的回答,但这里有一些关于他对您的问题 1 的回答的附加信息:

在某些特殊情况下,验证会在 过滤之前进行。一个例子是 the FileInput class。对于文件上传,我们应该在执行任何其他操作之前验证文件,以便在可能 rename/move/modify 文件的任何过滤器之前完成任何验证...(检查 link)。
我可以想象其他人有自定义输入 类,他们也这样做(实际上我自己也有一些 类)。