2011-09-13 90 views
3

我正試圖按照Matthew O'Phinney的這個教程,但沒有得到任何地方。複合元素不起作用

http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html

所有我想要做的就是創建一個包含一個複選框和輸入文本的複合元素。

new Zend_Form_Element_Checkbox(); 
new Zend_Form_Element_Text() 

我的代碼太複雜了,很多評論進出,但沒有任何工作。我相信比這更容易,但我似乎走錯了路。

+0

你需要具體談談您的實際問題是什麼 – asgeo1

+0

爲什麼你需要一個複合元素,但?爲什麼你不能在你的表單中同時擁有兩個獨立的元素?至於Mathews的方法 - 你肯定需要一個裝飾器 - 我想不出你還能如何渲染它。在Mathew的例子中,他創建了一個裝飾器,爲每個子元素組件調用視圖助手 - 這樣他就可以將這些元素恰好放置在周圍的標記中,正好在他需要的地方。通常,複合元素會有其他「周圍」標記,您需要在實際的子元素本身旁邊進行渲染。 – asgeo1

+0

啊,馬修是Zend Framework。如果有人知道ZF,那就是他。 – markus

回答

3

就我個人而言,我認爲自己創建一個複合元素是一項很多工作。我需要一個文本框和一個選擇菜單來協同工作,並通過ajax將用戶標識符交給該用戶擁有的實體,元素,裝飾器和驗證器的php代碼約爲200行代碼,然後是40行查看使用viewHelper呈現組合元素的腳本。

我跟着這個教程,以及非常有幫助,但沒有涵蓋我需要的一切,所以我不得不做很多搜索。我決定去使用複合元素,因爲功能很關鍵,並在很多地方使用,但如果它只是一種形式,我會將其實現爲2個獨立元素並編寫簡單的表單處理代碼來關聯這些元素。

5

這裏是一篇博文,向您展示如何創建一個表單元素(一個Zend_Form_Element的實例),該表單元素包含2個或更多的輸入元素。

http://akrabat.com/zend-framework/a-zend-framwork-compount-form-element-for-dates/

您還可以使用子窗體組以上的元素更多。
鏈接:http://framework.zend.com/manual/en/zend.form.forms.html#zend.form.forms.subforms

$subform = new Zend_Form_SubForm(); 
    $subform->addElement('checkbox', 'status', array(
     'decorators' => array(
      'ViewHelper', 
     ) 
    )); 
    $subform->addElement('text', 'test', array(
     'label'  => 'Text', 
     'decorators' => array(
      'ViewHelper', 
      'Label' 
     ) 
    )); 
    $this->addSubForm($subform, 'subformname');