2010-08-17 39 views
2

我已經將窗體拆分爲3個子窗體,並且在最後一個子窗體中的一個元素中,我創建了一個驗證程序,該窗體擴展了Zend_Validator_AbstractZend Validate - 如何傳遞不同子窗體的上下文值?

此驗證程序需要檢查第二個子窗體上的值是否爲空。但是,該值不會在第三個子表單中的元素的$context數組中。

跨SubForm在$context中提供此值的明智方法是什麼?

...

經過一番思考,我能想到這樣做的唯一途徑是,儘管它破壞了封裝傳遞父窗體的確認者的構造函數的引用。

回答

3

您也可以嘗試覆蓋表單對象 isValid()方法並使用可用的$ data變量。

例如:

<?php 
class MyForm extends Zend_Form { 
    public function isValid($data) { 
     // check $data['fieldname'] or add a new validator here, then... 
     return parent::isValid($data); 
    } 
} 
+0

http://framework.zend.com/manual/en/zend.filter.input.html – gawpertron 2010-08-19 18:46:36

+0

你會如何使用一起選擇使用的Zend_Filter_Input Zend_Form的? – gawpertron 2010-08-19 18:47:53

+0

Zend_Filter_Input看起來像是一個純粹處理過濾器和驗證器的Zend_Form。如果你有一個包含許多裝飾器和複雜的驗證規則的複雜表單,它看起來很有用。您可以分開責任或提供替代過濾器和驗證,而不會破壞基本形式。歡呼的提示 – gawpertron 2010-09-07 10:31:25

相關問題