0

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

我没有为我的密码字段创建过滤器,当我提交后打印表单数据时,密码字段是唯一不通过的字段,甚至密钥都没有了。

我创建这样的表单字段:

$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 传递给表单类进行验证/过滤之前,我已经打印了它,并且所有字段都在那里。

4

1 回答 1

1

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

all unvalidated data is evil - period
于 2013-10-26T16:03:55.390 回答