【问题标题】:Zend Framework 2 - filtersZend Framework 2 - 过滤器
【发布时间】:2016-06-13 20:49:19
【问题描述】:

刚接触 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*/),
        ),

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

龙哥

【问题讨论】:

    标签: zend-framework2


    【解决方案1】:

    问题 1

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

    问题2

    查看FilterPluginManager,了解可用于“库存”过滤器的所有别名。

    查看ValidatorPluginManager 了解验证器的概述。

    【讨论】:

    • 感谢这位非常有帮助的朋友。
    【解决方案2】:

    @BramGerritsen 在他的回答中非常正确,所以我支持他,但这里是他对您的问题 1 的回答的一些附加信息:

    在某些特殊情况下,验证发生在过滤之前。一个例子是the FileInput class。对于文件上传,应在我们执行任何其他操作之前验证文件,以便在任何可能重命名/移动/修改文件的过滤器之前完成任何验证...(检查链接)。
    我可以想象其他人有自定义输入类,他们做同样的事情(实际上我自己也有一些这样的类)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多