47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

Yii2の使い方: 複数選択できるドロップダウンリストへの初期値の与え方

Yii2に関しての自分用のメモです。

ドロップダウンリストで複数選択ができるタイプのものがあります。以下のようなもの。
f:id:ekutajp:20190918174238p:plain
これに初期値を与える方法を探したところ、以下のようなページは見つかったのですが、この方法ではうまくいきません。
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)が選択された状態になり、こんな感じで表示されます。
f:id:ekutajp:20190918175604p:plain

おまけ

ちなみに、データベースから取り出した情報を、ドロップダウンリストの初期値の形に変換するのは、array_columnが便利です。
qiita.com