2009-07-01 12 views
7

quiero presentar botones de radio en grupos lógicos productos:agrupar botones de radio en Zend Framework

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

Voice products: 
    () Standard 
    () Total 

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

Todos los botones de radio tienen el mismo atributo name - se entiende la idea. Parece que Zend Framework 1.8 no admite la agrupación de botones de radio de esta manera. Hay alguna solución para esto?

Actualización. Para aclarar, el código resultante debe verse de esta manera:

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/> 

No importa el código de formato exacto. Solo los elementos de la forma importan.

+3

Parece que podría ser el mismo problema. http://framework.zend.com/issues/browse/ZF-3541 El informe propone una solución en su publicación. –

+0

¿Estás usando Zend_Form? – jason

+0

Sí, uso Zend_Form. –

Respuesta

12

Usted es correcto que ZF 1.8 no admite agrupación de opciones de esta manera. Podría ver fácilmente el código dentro de Zend_View_Helper_FormRadio y crear su propio asistente de visualización que admita una matriz multidimensional (es decir, las agrupaciones de selección). Tenía que hacer esto ya para un proyecto, consulte el ejemplo a 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'), 
    ), 
)); 

resultante 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> 
+0

Gracias por apuntarme en la dirección correcta. Necesitaba envolver un div alrededor de cada grupo de botones de radio, y pude lograrlo de una manera similar. – Chris