如何將多個表單元素合併到一個驗證器中?我有包括地址信息如何將多個元素組合到一個驗證器中?
- 街道地址
- 郵政編碼
- 郵局
如果我添加驗證他們每個人作爲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