我正在尝试验证Zend Framework 2中的用户注册表单。
更具体地说,如何验证电子邮件,我可以做ZF1:
$email->setValidators( array(new Zend_Validate_EmailAddress()) );
我想知道我是否可以像这样打电话。
另外,我想知道如何验证两个需要相同的字段,如密码字段和密码验证。
我想当我说if($form->isValid())..
时,这会检查所有验证的getInputFilter()
方法。
我一直在看ZfcUser模块,但是现在,由于我还没有完全掌握ZF2的工作方式,所以我无法理解
任何想法,也许是一个简单的例子?
感谢
答案 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()
或[]
,在上面的例子中,我把它们混合起来没有特别的原因。