GETでURLにcat_id値を返して、ドロップダウンリストを選択する必要があることを伝えています。しかし、それは機能していません。
<?= $form->field($model, 'cat_id')->dropDownList(
ArrayHelper::map(DeviceCats::find()
->where(['is_deleted' => 'no'])->all(),'id','title')
,['options' => [$_GET['cat_id'] => ['selected'=>true]]
, 'Prompt' => ' -- Select Category --']) ?>
最後に信じられないほどの変更で解決しました。選択済みの最初の文字を大文字に変更しただけです( '選択済み'は '選択済み'にする必要があります)。これがコードです:
<?= $form->field($model, 'cat_id')->dropDownList(
ArrayHelper::map(DeviceCats::find()
->where(['is_deleted' => 'no'])->all(),'id','title')
,['options' => [$_GET['cat_id'] => ['Selected'=>'selected']]
, 'Prompt' => ' -- Select Category --']) ?>
「選択済み」は大文字の「S」で記述する必要があります。
'options'=>['72'=>['Selected'=>true]]
モデルにプロパティcat_idが設定されていることを確認してください。コントローラのどこかで、
$model->cat_id = filter_input_array(INPUT_GET, 'cat_id');
または
$modelArray = filter_input_array(INPUT_GET, 'nameofmodel');
$model->cat_id = $modelArray['cat_id'];
あなたが本当にしたい場合は、おそらくそこでもモデルの名前を使用する必要があります。
<?= $form->field($model, 'cat_id')->dropDownList(ArrayHelper::map(DeviceCats::find()->where(['is_deleted' => 'no'])->all(),'id','title'),['options' => [$_GET['SOMETHIGNHERE']['cat_id'] => ['selected'=>true]], 'Prompt' => ' -- Select Category --']) ?>