2012-11-11 15 views
9

Istnieje Zend_Form_Element_Multiselect w Zend Framework 1.12. Jak osiągnąć ten sam wynik w Zend Framework 2.0? widzę Zend \ Form \ Element \ MultiCheckbox i Zend \ Form \ Element \ SelectMultiSelect w Zend Framework 2

Odpowiedz

23

Ok, znalazłem tylko odpowiedź siebie i to nie było łatwe do odczytania z oficjalnej dokumentacji, raczej rozwiązanie eksperyment:

 $this->add(array(
      'type' => 'Zend\Form\Element\Select', 
      'attributes' => array(
       'multiple' => 'multiple', 
      ), 
      'name' => 'langs', 
      'options' => array(
       'label' => 'langs', 
       'value_options' => array(
        '0' => 'French', 
        '1' => 'English', 
        '2' => 'Japanese', 
        '3' => 'Chinese', 
       ), 
      ), 
     )); 

Wystarczy dodać

 'attributes' => array(
      'multiple' => 'multiple', 
     ), 

do konfiguracji.

+3

Nice .. Jak wybrać wiele opcji domyślnie? Jeśli mamy tylko jeden, na przykład, używamy wartości jak => '2'. Jak zrobić wiele opcji? – user2003356

+0

Przy tej odpowiedzi domyślny weryfikator informuje, że dane wejściowe są nieprawidłowe !!! jest napisane "Wejście nie zostało znalezione w stogu siana" ["regexInvalid"] => ciąg (53) "Podano niepoprawny typ, oczekiwany łańcuch, liczba całkowita lub liczba zmiennoprzecinkowa" – Abadis

4

Jedną z odpowiedzi Jevgeni'ego: upewnij się, że dodajesz "[]" do nazwy elementu, w przeciwnym razie otrzymasz tylko ostatnią wybraną wartość. Jest to problem PHP, nie ma nic wspólnego z ZF2. Ostateczna konfiguracja wygląda następująco:

$this->add(array(
     'type' => 'Zend\Form\Element\Select', 
     'attributes' => array(
      'multiple' => 'multiple', 
     ), 
     // NOTE the addition of "[]" to the name: 
     'name' => 'langs[]', 
     'options' => array(
      'label' => 'langs', 
      'value_options' => array(
       '0' => 'French', 
       '1' => 'English', 
       '2' => 'Japanese', 
       '3' => 'Chinese', 
      ), 
     ), 
    ));