2009-10-19 17 views
18

dodaję select elementu do Zend_Form przykład w następujący sposób:Zend Framework - Ustaw „wybrany” wartość w liście rozwijanej zaznacz pole

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

I zostały poszukiwania docs, ale nie może znaleźć prosty sposób wstępnej -ustawienie opcji wybranego elementu na "wybrane".

Odpowiedz

49

Właśnie wypracowane, jak to zrobić.

Musisz użyć metody setValue() elementu:

$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

myślę, że to powinno działać:

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

To nie działa. Ustawiłem "wartość" na odpowiadającą wartość

+1

'setDefault()' jest metodą formularza. Rozwiązanie Toma, 'setValue()', jest metodą elementową. To zależy od tego, z którym obiektem pracujesz przy ustawianiu wartości. – Sonny

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

Jak wyżej, można użyć 'wartość' => 'Blue' do tworzenia 'niebieski' => „Bleu "wybrany.

Mam nadzieję, że to pomoże ..

+0

Ten kod pomaga nam w tworzeniu elementu poprzez addElement zamiast createElement powyżej – emaillenin

0

Aby ustawić wartości domyślne można spróbować zarówno setDefault lub wypełnić

$form->populate($array_keypair_values);

+1

Aby podnieść jakość twojego posta, podaj jak/dlaczego twoja odpowiedź rozwiąże problem. –

0

prostu spróbować następujący kod, aby pokazać wartość rozwijane jako wybrany spośród kontroler i działa dobrze.

$ user-> setValue (wartość $); // Wartość $ to "wartość" i $ user jest elementem z.

3

W Zend Framework 2 ustaw atrybut "value". Na przykład domyślne Wybierz „Tak”:

$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

Wymienione rozwiązania nie będą działać dla Zend Framework 2, dla tych, którzy używają ZF2, sugeruję, używając następującej instrukcji, aby ustawić wartość domyślną:

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