我正在尝试在表单类中使用过滤器来过滤和验证表单字段。
我没有为我的密码字段创建过滤器,当我在提交后打印表单数据时,密码字段是唯一没有通过的字段,即使密钥已经消失。
我创建了这样的表单字段:
$this->add(array(
'name' => 'password_verify',
'type' => 'password',
'options' => array(
'label' => 'Verify password:'
),
'attributes' => array(
'required' => 'required',
'placeholder' => 'Verify password here...'
)
));
并在getInputFilter()方法中添加这样的过滤器
$inputFilter->add($factory->createInput(array(
'name' => 'password_verify',
'filters' => array(
array(
'name' => 'StripTags',
),
array(
'name' => 'StringTrim'
)
),
'validators' => array(
array(
'name' => 'identical',
'options' => array(
'token' => 'password',
)
)
)
我试图删除其他字段的inputFilters,它们也会消失。
为什么Form只返回被过滤的数据?
我在传递给表单类之前打印了postData以进行验证/过滤,并且所有字段都在那里。
答案 0 :(得分:1)
您始终需要向Field添加Validator。 Validator可以为空,但需要附加验证器。 ZF2的逻辑是:
all unvalidated data is evil - period