2010-09-07 17 views
4

J'ai le groupe suivant bouton radio:Zend Form Radio cochée par défaut

$enabled = $this->createElement('radio', 'enabled') 
       ->setLabel('Enabled') 
       ->setMultiOptions(array('1'=>'yes', '0'=>'no')) 
       ->setValue($rank_values['enabled']) 
       ->setAttrib('id', 'enabled') 
       ->setAttrib('class', $action . '_enabled') 
       ->setSeparator(''); 

Comment puis-je mettre une radio vérifiée? Maintenant, quand j'ouvre mon script, il n'y a pas de radio sélectionnée. Je veux sélectionner 'oui'. Comment?

Merci.

Répondre

7

il est beaucoup plus facile :)

$enabled = $this->createElement('radio', 'enabled') 
       ->setLabel('Enabled') 
       ->setMultiOptions(array('1'=>'yes', '0'=>'no')) 
       ->setValue($rank_values['enabled']) 
       ->setAttrib('id', 'enabled') 
       ->setAttrib('class', $action . '_enabled') 
       ->setSeparator('') 
       ->setValue("1"); 
3

Utilisez ceci:

->setAttrib("checked","checked") 

Pour que votre code complet ressemble à ceci:

$enabled = $this->createElement('radio', 'enabled') 
      ->setLabel('Enabled') 
      ->setMultiOptions(array('0'=>'no', '1'=>'yes')) 
      ->setAttrib("checked","checked") 
      ->setValue($rank_values['enabled']) 
      ->setAttrib('id', 'enabled') 
      ->setAttrib('class', $action . '_enabled') 
      ->setSeparator(''); 

[EDIT] En utilisant setValue:

Vous pouvez également utiliser cette :

->setValue('1') 

Ceci vérifie l'option représentée par la valeur 1 qui est yes.

+0

oui, il fonctionne si nous avons un seul élément. J'ai 2 éléments dans le groupe radio. – pltvs

+0

Avez-vous essayé le code complet que je donne? – shamittomar

+1

Oui. Il sélectionne le dernier élément dans plusieurs options. Il sélectionne 'no' – pltvs

0

Oui. Je l'ai résolu à l'aide de jQuery:

jQuery(document).ready(function(){ 
    var $radios = $('input:radio[name=enabled]'); 
    if($radios.is(':checked') === false) { 
     $radios.filter('[value=1]').attr('checked', true); 
    } 
}); 
1

je trouve que si vous avez un filtre puis définissez ->setvalue('X') ne fonctionne pas.

Je retiré ->addFilter('StringToLower')
et a ajouté ->setSeparator('')->setValue('N');

travaillé un régal

7

Dans le cas où quelqu'un se demande, j'utilise la notation de tableau de déclarer tous mes éléments dans mes formes et dans zend framework 2 d'avoir une option par défaut sélectionnée dans un bouton radio, vous devez ajouter la valeur d'attribut et de le rendre ont la clé des value_options que vous souhaitez sélectionner par défaut:

// Inside your constructor or init method for your form // 
$this->add(
     [ 
      'type'  => 'Radio', 
      'name'  => 'some_radio', 
      'options' => [ 
       'value_options' => [ 
        'opt1' => 'Radio option 1', 
        'opt2' => 'Radio option 2' 
       ] 
      ], 
      'attributes' => [ 
       'value' => 'opt1' // This set the opt 1 as selected when form is rendered 
      ] 
     ] 
    ); 

J'ai trouvé quelques exemples un peu confus parce qu'ils utilisaient des touches numériques dans les options de valeur (0, 1) alors quand j'ai vu 'value' => 1, il n'était pas évident pour moi que c'était la clé du tableau value_options. J'espère que cela aide quelqu'un.

3

Selon le manuel, vous le feriez de cette façon si vous deviez utiliser la notation de tableau: link to manual

$this->add(
     [ 
      'name'  => 'someRadioMethod', 
      'type'  => 'radio', 
      'options' => [ 
       'label' => 'Some descriptive label', 
       'value_options' => [ 
        [ 
         'value' => '1', 
         'label' => 'Label for 1', 
         'selected' => true, 

        ], 
        [ 
         'value' => '2', 
         'label' => 'Label for 2', 
         'selected' => false, 

        ] 
       ], 
      ], 
     ] 
    );