Zend Framework 1.12 中有一个 Zend_Form_Element_Multiselect。如何在 Zend Framework 2.0 中实现相同的结果?我只看到 Zend\Form\Element\MultiCheckbox 和 Zend\Form\Element\Select
问问题
13154 次
3 回答
25
好的,我自己找到了答案,从官方文档中读取并不容易,而是一个实验解决方案:
$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',
),
到您的设置。
于 2012-11-11T15:12:24.283 回答
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',
),
),
));
于 2014-10-02T21:12:11.407 回答
1
@user2003356
对于已选择的选项,请添加选项:
'value' => array( '0' => '1',
'1' => '3' )
或在 cronroller 中:
$form->bind($elements);
$form->get('langs')->setValue(['1','3']); form->bind($elements);
于 2020-11-06T11:16:11.370 回答