Zend Framework 2中的MultiSelect

bog*_*jov 10 php zend-form multi-select zend-framework2

Zend Framework 1.12中有一个Zend_Form_Element_Multiselect.如何在Zend Framework 2.0中实现相同的结果?我只看到Zend\Form\Element\MultiCheckbox和Zend\Form\Element\Select

bog*_*jov 24

好的,我自己找到了答案,从官方文档中读出来并不容易,而是一个实验解决方案:

        $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',
                ),
            ),
        ));
Run Code Online (Sandbox Code Playgroud)

只需添加

        'attributes' => array(
            'multiple' => 'multiple',
        ),
Run Code Online (Sandbox Code Playgroud)

到你的设置.

  • 很好..默认情况下如何选择多个选项?例如,如果我们只有一个,我们使用像value =>'2'.如何做多选项? (3认同)

小智 5

Jevgeni 的答案的一个补充:确保将“[]”添加到元素名称中,否则最终只会得到最后选择的值。这是一个PHP问题,与ZF2无关。所以最终的配置如下所示:

$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',
            ),
        ),
    ));
Run Code Online (Sandbox Code Playgroud)