Yii2に関しての自分用のメモです。
ドロップダウンリストで複数選択ができるタイプのものがあります。以下のようなもの。
これに初期値を与える方法を探したところ、以下のようなページは見つかったのですが、この方法ではうまくいきません。
stackoverflow.com
複数選択のドロップダウンのフォームの作り方
modelに$idsを定義する。
class Xxxx extends \yii\db\ActiveRecord { public $ids;
viewでdropDownListをレンダリングする。dropDownListの第一引数には、value => name の配列を指定する。
<?php $data = ['1' => 'name1', '2' => 'name2', '3' => 'name3', '4' => 'name4']; ?> <?= $form->field($model, 'ids')->dropDownList($data, [ 'multiple' => 'multiple' ])?>
初期値の与え方
controllerで、model->idsに選択されている状態にしたい、valueの配列を指定すればよいです。
class XxxxControlers extends Controller { public function actionXxxx() { ... model->ids = [1, 3]; ... } }
これで、1 (name1)と3(name3)が選択された状態になり、こんな感じで表示されます。
おまけ
ちなみに、データベースから取り出した情報を、ドロップダウンリストの初期値の形に変換するのは、array_columnが便利です。
qiita.com