Je retourne la valeur cat_id par GET dans l'URL pour indiquer que ma liste déroulante, dont l'élément doit être sélectionné .
<?= $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 --']) ?>
Enfin résolu avec un changement incroyable. Vient de changer la première lettre de sélectionné en majuscule (' selected ' devrait être ' Selected ') . Voici le code:
<?= $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électionné" doit être écrit avec une lettre majuscule "S":
'options'=>['72'=>['Selected'=>true]]
Assurez-vous simplement que votre modèle a la propriété cat_id définie. Quelque part dans votre contrôleur faites juste un
$model->cat_id = filter_input_array(INPUT_GET, 'cat_id');
ou
$modelArray = filter_input_array(INPUT_GET, 'nameofmodel');
$model->cat_id = $modelArray['cat_id'];
Si vous voulez vraiment le faire comme vous l'avez fait, vous devrez probablement utiliser le nom du modèle également.
<?= $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 --']) ?>