如何在zend框架2中验证注册表单?

时间:2012-10-11 06:21:56

标签: php forms validation zend-framework2

我正在尝试验证Zend Framework 2中的用户注册表单。

更具体地说,如何验证电子邮件,我可以做ZF1:

$email->setValidators( array(new Zend_Validate_EmailAddress()) );

我想知道我是否可以像这样打电话。

另外,我想知道如何验证两个需要相同的字段,如密码字段和密码验证。

我想当我说if($form->isValid())..时,这会检查所有验证的getInputFilter()方法。

我一直在看ZfcUser模块,但是现在,由于我还没有完全掌握ZF2的工作方式,所以我无法理解

任何想法,也许是一个简单的例子?

感谢

2 个答案:

答案 0 :(得分:8)

您是否已阅读official tutorial以了解新ZF2 Form组件的工作原理?

在非常高的级别,您需要一个Form对象和一个Filter对象一起工作。 Filter对象是放置过滤器和验证器的位置。但是,如果您在EmailAddress中使用Form类型的表单元素,则会自动添加正确的验证程序。 manual中有更多信息。

我最近为Zend的表单做过网络研讨会,您应该能够找到on this page

答案 1 :(得分:1)

我已经明白了。

验证器是多维数组,每个数组都有一个名称和一些选项。在开始时可能会有点连线注意到它,但zf2中的大量配置就是这样

查看密码示例:

$inputFilter->add($factory->createInput([
            'name' => 'password',
            'required' => true,
            'filters' => [ ['name' => 'StringTrim'], ],
            'validators' => [
                [
                    'name' => 'StringLength',
                    'options' => [
                        'encoding' => 'UTF-8',
                        'min'      => 6,
                        'max'      => 128,
                    ],
                ],
            ],
        ]));

        $inputFilter->add($factory->createInput([
            'name' => 'password_verify',
            'required' => true,
            'filters' => [ ['name' => 'StringTrim'], ],
            'validators' => [
                array(
                    'name'    => 'StringLength',
                    'options' => array( 'min' => 6 ),
                ),
                array(
                    'name' => 'identical',
                    'options' => array('token' => 'password' )
                ),
            ],
        ]));

注意,在php 5.3>一个数组可以写成array()[],在上面的例子中,我把它们混合起来没有特别的原因。