2012-11-11 47 views
9

Zend Framework 1.12中有一個Zend_Form_Element_Multiselect。 如何在Zend Framework 2.0中實現相同的結果?我只能看到Zend \ Form \ Element \ MultiCheckbox和Zend \ Form \ Element \ SelectZend Framework中的MultiSelect 2

回答

23

好吧,我自己找到了答案,並且很難讀出官方文檔,而不是實驗解決方案:

 $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', 
     ), 

您的設置。

+3

不錯..如何選擇默認的多個選項?例如,如果我們只有一個,我們使用like value =>'2'。如何做多選項? – user2003356

+0

有了這個答案,默認驗證器說輸入無效!它說:「在乾草堆中找不到輸入」[「regexInvalid」] => string(53)「給出的類型無效。字符串,整數或浮點數預期」 – Abadis

4

除了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', 
      ), 
     ), 
    ));