web-dev-qa-db-fra.com

Yii2 dropdownList sélectionnez l'option par défaut

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

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

"Sélectionné" doit être écrit avec une lettre majuscule "S":

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

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 --']) ?>
0
Mihai P.