在向我的表單添加元素後,我按照奇怪的順序渲染它們,在一個複選框之前獲取提交按鈕。將欣賞提示在哪裏檢查快速修復。Zend_Form元素呈現錯誤順序
class SomeForm extends My_Form {
public function init() {
$this->addElements();
//add a few elements (#1)
$this->addElements($otherForm->getElements());
//borrow some elements from another form (#2)
if ($trueCondition=true) {
$this->addElements();
//add one more element which will render at end of form (#3)
}
$this->addElements();
//some more, including submit button (#4)
parent::init();
//call My_Form to register custom decorator; culprit?
}
}
輸出:
<inputs from addElements() #1 />
<inputs from addElements() #2 />
<inputs from addElements() #4 /> <-
<inputs from addElements() #3 /> <- mixed up order
所有其他形式使用定製的裝飾呈現在他們的添加順序的元素。我沒有發佈裝飾器,因爲它很雜亂。希望這個錯誤在別處。
元素應該根據何時將它們添加到表單來排序。也許你在某處使用'setOrder()'? – Liyali 2012-04-17 09:12:20
沒有。檢查窗體,控制器和視圖代碼,不匹配'setOrder' – bububaba 2012-04-17 09:14:18
您使用ZS/Eclipse嗎?如果我是你,我會運行表單(幾個斷點),並檢查在調試透視模式下發生了什麼。這通常是一種很好(快速)的方式來查看代碼的執行情況。 – Liyali 2012-04-17 09:21:56