web-dev-qa-db-ja.com

Yii2 dropdownListのデフォルトオプションを選択

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 --']) ?>
8
Mojtaba

最後に信じられないほどの変更で解決しました。選択済みの最初の文字を大文字に変更しただけです( '選択済み'は '選択済み'にする必要があります)。これがコードです:

<?= $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 --']) ?>
13
Mojtaba

「選択済み」は大文字の「S」で記述する必要があります。

'options'=>['72'=>['Selected'=>true]]
10
sylvain

モデルにプロパティ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 --']) ?>
0
Mihai P.