Yii2 dropdownList выберите параметр по умолчанию

Я возвращаю значение cat_id по GET in url, чтобы сказать, что мой выпадающий список, который должен быть выбран. Но это не работает.

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

3 ответов


наконец решен с невероятным изменением. Просто изменил первую букву выбранного на заглавную ('избранные' должно быть 'избранные'). Вот код:

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

'Selected' должно быть написано с большой буквы 'S':

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

просто убедитесь, что ваша модель имеет свойство cat_id set. Где-то в вашем контроллере просто сделайте

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