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
9
A
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.
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',
),
),
));
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
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