4

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

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

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

我想知道我是否可以像这样称呼类似的东西。

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

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

我一直在看ZfcUser模块,但是现在我不太了解,因为我没有完全掌握 ZF2 的工作原理

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

谢谢

4

2 回答 2

8

您是否阅读过官方教程以了解新的 ZF2Form组件是如何工作的?

在非常高的层次上,您需要一个Form对象和一个Filter对象一起工作。该Filter对象是您放置过滤器和验证器的位置。但是,如果您在 中使用类型的表单元素EmailAddressForm那么它将自动添加正确的验证器。手册中有更多信息。

我最近做了一个关于 Zend 表单的网络研讨会,你应该可以在这个页面上找到它。

于 2012-10-11T06:56:39.823 回答
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()or [],在上面的示例中,我没有特别的原因将它们混合在一起。

于 2012-10-12T06:51:34.953 回答