2009-07-01 199 views
7

分組單選按鈕,我想提出在邏輯產品組單選按鈕:Zend框架

Broadband products: 
    (*) 2 Mbit 
    () 4 Mbit 

Voice products: 
    () Standard 
    () Total 

Bundles: 
    () 4 Mbit + Standard 
    () 4 Mbit + Total 

所有單選按鈕都具有相同的屬性name - 你的想法。看來Zend Framework 1.8不支持以這種方式對單選按鈕進行分組。有沒有解決這個問題的方法?

更新。只是爲了澄清,產生的代碼應該看起來有點這樣:

Broadband products: <br/> 
<input type="radio" name="product" value="1"/> 2 Mbit <br/> 
<input type="radio" name="product" value="2"/> 4 Mbit <br/> 

Voice products: <br/> 
<input type="radio" name="product" value="3"/> Standard <br/> 
<input type="radio" name="product" value="4"/> Total <br/> 

Bundels: <br/> 
<input type="radio" name="product" value="5"/> 4 Mbit + Standard <br/> 
<input type="radio" name="product" value="6"/> 4 Mbit + Total <br/> 

不知道確切的格式代碼。只有形式要素很重要。

+3

這聽起來像它可能是同樣的問題。 http://framework.zend.com/issues/browse/ZF-3541 報告提出了一個修復他的帖子。 – 2009-07-01 16:25:37

+0

你在使用Zend_Form嗎? – jason 2009-07-07 04:05:33

+0

是的,我確實使用Zend_Form。 – 2009-07-07 08:46:16

回答

12

你是正確的,ZF 1.8不支持以這種方式對選項進行分組。您可以輕鬆查看Zend_View_Helper_FormRadio中的代碼並創建您自己的支持多維數組(即選擇分組)的視圖助手。我不得不爲一個項目已經這樣做了,在pastebin.com

PHP檢查出的例子:

$form->addElement('radio', 'test', array(
    'helper'=>'formMultiRadio', 
    'label'=>'Test Thing', 
    'multiOptions'=>array(
     'Test'=>array('1'=>'1', '2'=>'2'), 
     'Test 2'=>array('3'=>'3', '4'=>'4'), 
     'Test 3'=>array('5'=>'5', '6'=>'6'), 
    ), 
)); 

生成的HTML:

<dt id="test-label"><label for="test" class="optional">Test Thing</label></dt> 

<dd id="test-element"> 
Test<br /> 
<label for="test-1"><input type="radio" name="test" id="test-1" value="1" />1</label><br /> 
<label for="test-2"><input type="radio" name="test" id="test-2" value="2" />2</label><br /> 
Test 2<br /> 
<label for="test-3"><input type="radio" name="test" id="test-3" value="3" />3</label><br /> 
<label for="test-4"><input type="radio" name="test" id="test-4" value="4" />4</label><br /> 
Test 3<br /> 
<label for="test-5"><input type="radio" name="test" id="test-5" value="5" />5</label><br /> 
<label for="test-6"><input type="radio" name="test" id="test-6" value="6" />6</label> 
</dd>