如何将多个表单元素合并到一个验证器中?我有包括地址信息如何将多个元素组合到一个验证器中?
- 街道地址
- 邮政编码
- 邮局
如果我添加验证他们每个人作为streetValidator,zipCodeValidator,postOfficeValidator我结束了问题:在某处可以有foostreet(验证可以),10101某处(验证也可以)以及barOffice在某处(验证也可以)。但所有的地址信息结合起来,没有地址“foostreet,10101,barOffice”。
现在您有:
<?php
$f = new Zend_Form();
$street = new Zend_Form_Element_Text('street');
$f->addElement($street);
$zip = new Zend_Form_Element_Text('zip');
$f->addElement($zip);
$office = new Zend_Form_Element_Text('office');
$f->addElement($office);
但它应该是:
$f = new Zend_Form();
// All three fields are still seperated
$address = new My_Address_Fields();
$address->addValidator(new addressValidator());
$f->addElement($address);
验证是一样的东西
class addressValidator extends Zend_Validator_Abstract
{
public function isValid()
{
//$street = ???;
//$zip = ???;
//$office = ???;
// XMLRPC client which does the actual check
$v = new checkAddress($street, $zip, $office);
return (bool)$v->isValid();
}
}
我想这是关于如何创建MyAddressField导致问题的部分。你必须为你的装饰器创建一个复合的表单元素。看看[这个](http://weierophinney.net/matthew/archives/212-The-simplest-Zend_Form-decorator.html)[系列](http://weierophinney.net/matthew/archives/213-From- [articles](http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html#extended)[在表单装饰器上]的[inside-out-How-to-layer-decorators.html) (http://devzone.zend.com/article/3450)。特别是链接为'articles'的文章,应该让你进入 – Gordon 2009-12-29 10:59:04