2015-06-28 11 views
7

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

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

Приведи http://www.saidur-rahman.com/default-selected- value-in-a-dropdownlist-in-yii/ –

ответ

11

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

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

Просто убедитесь, что ваша модель имеет свойство cat_id. Someplace в контроллере вобще

$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

Спасибо, Михай. На самом деле, я уверен в существующем значении в массиве. Кроме того, я использовал var_dump ($ _ GET), и он находится на уровне 1. – Mojtaba

+0

, это моя точка ... этого не должно быть. Вы прыгаете через обручи, чтобы заставить это работать и делать это неправильно. Вместо этого вы должны переместить код в контроллер. Кроме того, вы используете PHP-глобалы напрямую, и это не так. –

10

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

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

Почему, черт возьми, должен быть написан с капиталом S? Это должно быть ошибка или что-то еще. В любом случае, спасибо! –