在Zend的形式,如果兩個元件具有相同的順序,然後將Zend的完全忽略第二個元件(而不是第一顯示下它)。以下面的代碼爲例。注意,City
和Zip Code
元件具有如何設置的Zend表單元素的順序和避免重複
$address = new Zend_Form_Element_Textarea('address');
$address->setLabel('Address')
->setAttrib('cols', 20)
->setAttrib('rows', 2)
->setOrder(3)
;
$city = new Zend_Form_Element_Text('city');
$city->setLabel('City')
->setOrder(4)
;
$postal = new Zend_Form_Element_Text('postal');
$postal->setLabel('Zip Code')
->setOrder(4);
當這種形式呈現相同的順序,所述元件Zip Code
是無處找到。
如果我想動態設置像一個按鈕元素,但告訴它的形式結束渲染,我將如何做到這一點,沒有碰到具有相同的順序兩種元素的問題?
public function addSubmitButton($label = "Submit", $order = null)
{
$form_name = $this->getName();
// Convert Label to a lowercase no spaces handle
$handle = strtolower(str_replace(" ","_",$label));
$submit = new Zend_Form_Element_Submit($handle);
$submit->setLabel($label)
->setAttrib('id', $form_name . "_" . $handle)
;
///////// Set the button order to be at the end of the form /////////
$submit->setOrder(??????);
$this->addElement($submit);
}
爲什麼這些元素具有相同的順序?如果您將郵政編碼元素訂購爲5,會發生什麼情況? – markus 2011-03-24 21:13:11
如果郵政編碼有「5」,它工作得很好......我想說明的是,當兩個元素具有相同的順序,第二個完全被忽略。這提出了我必須知道順序的問題,所以我不會意外覆蓋以前設置的元素。 – 2011-03-24 21:14:44
我明白了,但是我在使用Zend Form時從未設置過順序,並且從來沒有遇到過這樣的問題。你不能也得到訂單,看看是否已經設置了某個訂單號嗎? – markus 2011-03-24 21:49:18