2009-10-19 13 views
18

Je suis d'ajouter un élément de sélection à une instance Zend_Form comme suit:Zend Framework - Définir la valeur « sélectionné » dans la liste déroulante boîte de sélection

$user = $form->createElement('select','user')->setLabel('User: ')->setRequired(true); 
    foreach($users as $u) 
     { 
      if($selected == $u->id) 
      { 
       $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname); 
       //*** some way of setting a selected option? selected="selected" 

      } 
      else 
       $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname); 
     } 

je cherche la documentation mais ne peut pas trouver un moyen simple de pré -définir une option de l'élément select sur 'selected'.

Répondre

49

Je viens travaillé sur la façon de le faire.

Vous devez utiliser la setValue() de l'élément:

$user = $form->createElement('select','user')->setLabel('User: ')->setRequired(true); 
    foreach($users as $u) 
     $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname); 

$user->setValue($selected); //$selected is the 'value' of the <option> that you want to apply selected="selected" to. 
1

Je pense que cela devrait fonctionner:

$form->setDefault('user', 'value'); // Set default value for element 
+0

Cela ne semble pas fonctionner. J'ai mis 'valeur' ​​à la valeur correspondante du

+1

'setDefault()' est une méthode de formulaire. La solution de Tom, 'setValue()', est une méthode d'élément. Cela dépend de l'objet avec lequel vous travaillez lorsque vous définissez la valeur. – Sonny

29
$form->addElement('select','foo', 
array(
     'label'  => 'ComboBox (select)', 
     'value'  => 'blue', 
     'multiOptions' => array(
      'red' => 'Rouge', 
      'blue' => 'Bleu', 
      'white' => 'Blanc', 
     ), 
    ) 
); 

Comme ci-dessus, vous pouvez utiliser 'valeur' ​​=> 'bleu' pour faire 'bleu' => « Bleu 'sélectionné.

J'espère que cela vous aidera ..

+0

ce code nous aide à créer un élément via addElement plutôt que createElement au dessus de – emaillenin

0

Pour définir des valeurs par défaut, vous pouvez essayer les deux setDefault ou remplir

$form->populate($array_keypair_values);

+1

Pour améliorer la qualité de votre message, veuillez indiquer comment/pourquoi votre réponse résoudra le problème. –

0

J'essaie juste du code ci-dessous pour afficher la valeur déroulante sélectionnée à partir contrôleur et ça marche bien.

$ utilisateur-> setValue ($ value); // $ value est la valeur de l'utilisateur et $ user est l'élément de.

3

Dans Zend Framework 2, définissez l'attribut 'value'. Par exemple, pour défaut Select « Oui »:

$this->add(array(
     'name'  => 'isFlexible', 
     'type'  => 'Select', 
     'options' => array(
      'label'   => 'Is it flexible?' 
      ,'label_attributes' => array('placement' => 'APPEND') 
      ,'value_options' => array(
        '' => 'Select Below', 
        '0' => 'No', 
        '1' => 'Yes', 
        '2' => 'N/A', 
      ), 
     ), 
     'attributes' => array(
      'id'  => 'is_flexible', 
      'value' => 1, 
     ), 
    )); 
0

Les solutions mentionnées ne fonctionnent pas pour Zend Framework 2, Pour ceux qui utilisent ZF2, je suggère d'utiliser l'instruction suivante pour définir une valeur par défaut:

$formX->get('<Select element Name>')->setValue(<the id of the selected item>);