2009-10-19 24 views
18

Estoy añadiendo un elemento de selección a una instancia Zend_Form de la siguiente manera:Zend Framework - Establecer valor 'seleccionado' en la selecta lista desplegable

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

He estado buscando los documentos, pero no puedo encontrar una manera sencilla de pre -estableciendo una opción del elemento seleccionado a 'seleccionado'.

Respuesta

49

acabo trabajado en cómo hacerlo.

Tienes que utilizar el método setValue() del 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

Creo que esto debería funcionar:

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

Eso no parece funcionar. He establecido 'valor' en el valor correspondiente de

+1

'setDefault()' es un método de formulario. La solución de Tom, 'setValue()', es un método de elemento. Solo depende de qué objeto estás trabajando cuando configuras el valor. – Sonny

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

Como el anterior, puede utilizar el 'valor' => 'azul' para hacer 'azul' => 'Bleu 'seleccionado.

espero que esto le ayudará a ..

+0

este código nos ayuda a crear un elemento a través de addElement en lugar de crearElemento arriba de – emaillenin

0

Para establecer los valores por defecto se puede tratar tanto setDefault o poblar

$form->populate($array_keypair_values);

+1

Para aumentar la calidad de su publicación, por favor incluya cómo y por qué su respuesta resolverá el problema. –

0

Sólo trato siguiente código para mostrar el valor desplegable como seleccionado de controlador y funciona bien.

$ user-> setValue ($ value); // $ value es el 'valor' de y $ user es el elemento de from.

3

En Zend Framework 2 establezca el valor 'attribue. Por ejemplo a los valores de la lista Seleccione '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

Las soluciones mencionadas no funcionarán para Zend Framework 2, para aquellos que utilizan ZF2, sugiero utilizar la siguiente instrucción para establecer un valor predeterminado:

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