2009-10-19 39 views
18

Tôi thêm một yếu tố lựa chọn để một trường hợp Zend_Form như sau:Zend Framework - Cài đặt 'chọn' giá trị trong danh sách thả xuống chọn hộp

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

Tôi đã tìm kiếm các tài liệu nhưng không thể tìm thấy một cách đơn giản trước -setting một tùy chọn của phần tử select thành 'selected'.

Trả lời

49

Tôi vừa làm việc ra làm thế nào để làm điều đó.

Bạn phải sử dụng các phương pháp setValue() của nguyên tố này:

$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

tôi nghĩ rằng điều này sẽ làm việc:

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

Điều đó dường như không hoạt động. Tôi đã đặt 'giá trị' thành giá trị tương ứng của

+1

'setDefault()' là một phương thức biểu mẫu. Giải pháp của Tom, 'setValue()', là một phương thức phần tử. Nó chỉ phụ thuộc vào đối tượng bạn đang làm việc với khi thiết lập giá trị. – Sonny

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

Như trên, bạn có thể sử dụng 'giá trị' => 'xanh' để làm 'xanh' => 'Bleu ' đã chọn.

Tôi hy vọng điều này sẽ giúp bạn ..

+0

mã này giúp chúng tôi tạo yếu tố thông qua addElement thay vì createElement trên – emaillenin

0

Để thiết lập các giá trị mặc định, bạn có thể thử cả hai setDefault hoặc cư

$form->populate($array_keypair_values);

+1

Để tăng chất lượng bài đăng của bạn, vui lòng bao gồm cách/tại sao câu trả lời của bạn sẽ giải quyết được vấn đề. –

0

Tôi chỉ cố gắng sau mã để hiển thị giá trị thả xuống như được lựa chọn từ điều khiển và nó hoạt động tốt.

$ user-> setValue ($ value); // $ value là 'value' của và $ user là phần tử của từ.

3

Trong khung công tác Zend 2, đặt giá trị 'giá trị'. Ví dụ để mặc định Select để 'Yes':

$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

Các giải pháp đề cập sẽ không làm việc cho Zend Framework 2, Đối với những người sử dụng Zf2, tôi đề nghị sử dụng các hướng dẫn sau để đặt một giá trị mặc định:

$formX->get('<Select element Name>')->setValue(<the id of the selected item>); 
Các vấn đề liên quan