2009-10-19 14 views
18

sto aggiungendo un elemento di selezione a un'istanza Zend_Form come segue:Zend Framework - Imposta valore 'selezionato' nel menu a discesa casella di selezione

$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); 
     } 

ho cercato i documenti, ma non riesco a trovare un modo semplice di pre -impostare un'opzione dell'elemento select su 'selected'.

risposta

49

Ho appena trovato il modo di farlo.

Devi utilizzare il metodo setValue() dell'elemento:

$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

Penso che questo dovrebbe funzionare:

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

Non sembra funzionare. Ho impostato 'valore' sul valore corrispondente dello

+1

'setDefault()' è un metodo di forma. La soluzione di Tom, 'setValue()', è un metodo di elemento. Dipende solo da quale oggetto stai lavorando quando si imposta il valore. – Sonny

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

Come sopra, si può usare 'valore' => 'blu' per fare 'blu' => 'Bleu ' selezionato.

Spero che questo vi aiuterà a ..

+0

questo codice ci aiuta a creare un elemento tramite addElement piuttosto che createElement sopra – emaillenin

0

Per impostare i valori di default si può provare sia setDefault o popolare

$form->populate($array_keypair_values);

+1

Per aumentare la qualità del tuo post, includi come/perché la tua risposta risolverà il problema. –

0

cerco solo seguente codice per mostrare il valore discesa come selezionato da controller e funziona bene.

$ user-> setValue (valore $); // $ valore è il 'valore' di e $ utente è l'elemento di from.

3

In Zend Framework 2 impostare l'attributo 'valore'. Ad esempio, per impostazione predefinita, il Select 'Sì':

$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

Le soluzioni di cui non funziona per Zend Framework 2, Per coloro che utilizzano ZF2, suggerisco usando la seguente istruzioni per impostare un valore di default:

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