2012-11-11 18 views
9

Zend Framework 1.12にZend_Form_Element_Multiselectがありました。 Zend Framework 2.0で同じ結果を達成する方法は? は、私が唯一のZend \フォーム\要素\ MultiCheckboxとZend \フォーム\要素\を選択Zend Framework 2のMultiSelect

答えて

23

[OK]を、私は自分自身を答えを見つけることが見て、公式ドキュメントのうち、読みやすいではなかった、むしろ実験ソリューション:

 $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

いいえ..デフォルトで複数のオプションを選択するにはどうすればよいですか?たとえば、1つしかない場合は、同じ値=> '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', 
      ), 
     ), 
    )); 
関連する問題