2010-08-01 89 views
0

我試圖添加Zend_Form_Elements在我的表單中的單選按鈕,但到目前爲止我一直無法這樣做。如果任何人可以指出我在正確的方向,將不勝感激。表單需要呈現如下圖所示:Zend_Form:添加元素到單選按鈕

(*) [____]% 

() [____]€ 

() [___] for [___] 

回答

0

使用形式decorators和CSS,你想要的樣式輸入。

您會使用forn裝飾器重寫表單的標記。但是,這是一個非常挑戰性的問題,也許你最好的選擇是一個formScriptScript。有很容易實現,並讓您100%的表單的HTML控制。看看

例子:完全自定義使用ViewScript裝飾

在我聯繫的例子。

+0

這是一個令人難以置信的含糊答案。關心更精確一點? – Andy 2010-08-02 06:55:40

0

怎麼是這樣的:

class My_RadioForm extends Zend_Form 
{ 
    public function init() 
    { 
     $this->addElement('radio', 'myradio', array(
      'label' => 'Select an option below', 
      'multiOptions' => array(
       'val1' => 'Text 1', 
       'val2' => 'Text 2', 
       'val3' => 'Text 2', 
      ), 
     )); 
    } 

}

非常特殊的渲染,@iznogood是正確的:總得進入所有的裝飾企業。

+0

你好。這幾乎是我已經擁有的代碼。問題是我需要在迭代之間插入元素,否則它只是一個簡單的單選按鈕列表。如果我需要進入裝飾器,我需要做什麼?添加和/或刪除裝飾器?創建我自己的? '使用表單裝飾'是非常不明確的。 – Andy 2010-08-02 12:59:27

0

如果只是定位輸入標籤,您可以使用docorators。您可以通過覆蓋/修改默認的FormElements裝飾器來實現,例如,通過將float:left樣式屬性添加到特定的表單元素。從大衛的繼續示例:

$this->addElement('radio', 'myradio', array(
     'label' => 'Select an option below', 
     'multiOptions' => array(
      'val1' => 'Text 1', 
      'val2' => 'Text 2', 
      'val3' => 'Text 2', 
     ), 
     'decorators' => 
      array(
      'ViewHelper', 
      'Errors', 
      'Description', 
      array('HtmlTag', array('tag' => 'dd', 'style' => 'float: left')), 
      'Label' 
     ) 
)); 

還有一個setDefaultDecorators()方法,它允許您覆蓋所有元素裝飾在整個表格。

更高級的解決方案,用於創建複合元素 - http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html - 即包含多個輸入標籤的自定義表單元素。您可以通過這種方式更好地控制表單業務邏輯。

+0

實際上,這不是我想要的。我想要一個在單選按鈕旁邊插入元素的方法。目前的實現只允許插入標籤(參見示例中的'文本1','文本2'等)。簡單地使用CSS來移動會破壞頁面的自然流動。 – Andy 2010-08-03 10:28:53

+1

你應該創建你自己的複合表單元素。 – Ernest 2010-08-03 10:49:56