在Zend Framework中对单选按钮进行分组

7

我希望将单选按钮按逻辑产品组进行展示:

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报告者在他的帖子中提出了修复建议。 - Kieran Hall
你正在使用Zend_Form吗? - jason
是的,我使用 Zend_Form。 - Michał Niedźwiedzki
2个回答

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>

感谢您指引我正确的方向。我需要在每组单选按钮周围包装一个div,并且成功地以类似的方式完成了它。 - Chris

0

这就是他正在使用并遇到问题的内容。 - mercator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接