2009-07-01 8 views
7

Je veux présenter des boutons radio en groupes de produits logiques:boutons radio dans Grouper Zend Framework

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

Voice products: 
    () Standard 
    () Total 

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

Tous les boutons radio ont la même name attribut - vous voyez l'idée. Il semble que Zend Framework 1.8 ne supporte pas le groupement des boutons radio de cette façon. Y a-t-il une solution à cela?

Mise à jour. Juste pour clarifier, le code résultant devrait ressembler à ceci:

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

Ignorer le code de format exact. Seuls les éléments de forme comptent.

+3

Cela semble être le même problème. http://framework.zend.com/issues/browse/ZF-3541 Le reporté propose un correctif dans son post. –

+0

Utilisez-vous Zend_Form? – jason

+0

Oui, j'utilise Zend_Form. –

Répondre

12

Vous avez raison que ZF 1.8 ne supporte pas regroupement d'options de cette manière. Vous pouvez facilement regarder le code à l'intérieur Zend_View_Helper_FormRadio et créer votre propre assistant de vue qui prend en charge un tableau multidimensionnel (c'est-à-dire les groupements sélectionnés). Je devais déjà le faire pour un projet, consultez l'exemple à 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'), 
    ), 
)); 

résultant 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

Merci de m'indiquer dans la bonne direction. J'avais besoin d'envelopper un div autour de chaque groupe de boutons radio, et était capable de l'accomplir de la même manière. – Chris