2012-04-03 60 views
0

目前我在擴展Zend_Form方面遇到很大困難。難以擴展Zend_Form

我有基本的類叫做Forms_LpaManageEmailForm。 它被分開使用並且工作正常。 Next我創建了一個新的班級表格 ,名爲Default_Form_CartReport女巫延伸Forms_LpaManageEmailForm。 因此,任務是渲染Default_Form_CartReport並對其進行修剪。 換句話說,我需要的所有功能 Forms_LpaManageEmailForm類但被覆蓋_addMultiOptionsForMultiSelect()函數 (做什麼)和更改按鈕標籤(不解決)。

在基礎類我已經隱藏元素命名爲ID該值是充滿 $this->_entry_id['entry_id'].當我單獨使用基本形式 - 它的炒菜鍋的罰款。但是,當我運行擴展窗體(Forms_LpaManageEmailForm)時,我看到隱藏的id元素的值爲空,即 。在構建部分的基本類中,我運行 Zend調試器(使用此行Zend_Debug::dump($this->_entry_id['entry_id']))查看 值是否已通過。它通過:)當我在init()部分重複這一點,它顯示NULL ...

因爲我幾乎不明白 - 問題奠定在init()函數中,在它被稱爲的方式。 我認爲Default_Form_CartReport類骨架有問題。

我已經上傳代碼到:PASTEBIN 真的需要幫助這個問題。

謝謝!

回答

1

我相信你的問題導致我的事實Forms_LpaManageEmailForm:: __construct直接調用$this->init()。如果您打開Zend_Form,您會注意到__construct也正在調用$this->init()函數。這會導致您的init()函數執行兩次。

嘗試僅加載__construct函數中的所有邏輯&元素,並且不要使用init()函數。另外,每個表單類中的__construct函數在任何附加邏輯之前都應該始終調用parent::__construct

+0

** aporat **,非常感謝您的回答!我更新了我的代碼,現在在這裏:[LINK](http://pastebin.com/DPJxv7U5)。現在,當我運行'Zend_Debug :: dump($ this-> getElements())'時,它會寫入id元素具有'[「_value」:protected] => int(51)'值。但仍然不輸出HTML格式...現在我可以更改標籤:)我認爲我們正在爲最終解決方案的正確方式 – Kuzma 2012-04-03 16:21:57

+0

此外,我已經添加了來自'Zend_Debug :: dump($ this-> getElements ())' – Kuzma 2012-04-03 18:02:45

+0

按照他們的方式:如果我從父類中刪除id元素 - 子表單根本不會被渲染。但我可以看到形式轉儲...非常奇怪的行爲 – Kuzma 2012-04-04 12:21:23