Php Zend框架2中的MultiSelect
Zend Framework 1.12中有一个Zend_Form_元素_Multiselect。 如何在Zend Framework 2.0中实现相同的结果?Php Zend框架2中的MultiSelect,php,zend-form,zend-framework2,multi-select,Php,Zend Form,Zend Framework2,Multi Select,Zend Framework 1.12中有一个Zend_Form_元素_Multiselect。 如何在Zend Framework 2.0中实现相同的结果? 我只看到Zend\Form\Element\MultiCheckbox和Zend\Form\Element\Select好的,我自己找到了答案,从官方文档中不容易读到,而是一个实验解决方案: $this->add(array( 'type' => 'Zend\Form\Element\S
我只看到Zend\Form\Element\MultiCheckbox和Zend\Form\Element\Select好的,我自己找到了答案,从官方文档中不容易读到,而是一个实验解决方案:
$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',
),
),
));
加上
'attributes' => array(
'multiple' => 'multiple',
),
添加到您的设置中。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',
),
),
));
对于已选择的选项外接程序选项:
'value' => array( '0' => '1',
'1' => '3' )
或者在crontroller中:
$form->bind($elements);
$form->get('langs')->setValue(['1','3']); form->bind($elements);
美好的默认情况下如何选择多个选项?例如,如果我们只有一个,那么我们使用like value=>'2'。如何做多选项?有了这个答案,默认验证器会说输入无效!!!它表示“在haystack中找不到输入”[“regexInvalid”]=>string(53)“给定的类型无效。应为string、integer或float”
$form->bind($elements);
$form->get('langs')->setValue(['1','3']); form->bind($elements);