提交后请求表单数据时,未过滤的表单字段会消失

时间:2013-10-26 11:51:46

标签: zend-framework2 zend-form zend-filter

我正在尝试在表单类中使用过滤器来过滤和验证表单字段。

我没有为我的密码字段创建过滤器,当我在提交后打印表单数据时,密码字段是唯一没有通过的字段,即使密钥已经消失。

我创建了这样的表单字段:

$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以进行验证/过滤,并且所有字段都在那里。

1 个答案:

答案 0 :(得分:1)

您始终需要向Field添加Validator。 Validator可以为空,但需要附加验证器。 ZF2的逻辑是:

all unvalidated data is evil - period