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*/),
),
真的很感激任何建议,因为我一直在努力解决这些问题。但是找不到这些问题的答案。
卷尾
答案 0 :(得分:1)
问题1
是的,使用输入过滤器时,首先会在验证发生前过滤该值。
<强>问题2 强>
查看FilterPluginManager
可以用于“stock”过滤器的所有别名。
检查ValidatorPluginManager
以获取验证器的概述。
答案 1 :(得分:0)
@BramGerritsen的回答是非常正确的,所以我对他进行了投票,但是这里有一些补充信息可以回答你的问题1 :
在特殊情况下,验证会在过滤之前发生。一个例子是the FileInput
class。使用文件上传文件时,我们应该先验证文件,以便在任何可能重命名/移动/修改文件的过滤器之前进行任何验证...(查看链接)。
我可以想象其他人有自定义输入类,他们也这样做(我实际上有一些像我自己的类)。