Je veux afficher la valeur sélectionnée dans la liste déroulante Yii2,
$ _GET Valeur:
$id = $_GET["cid"];
Code déroulant
$form->field($model, 'userid')
->dropDownList(
[User::getUser()],
//[ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name')],
['Prompt'=>'Select a user','id'=>'user_dropdown'],
['options' =>
[
$id => ['selected' => true]
]
]
)->label('');
mais cette méthode ne fonctionne pas!
Essaye ça.
$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
Fondamentalement, vous affectez les options (vos éléments <option>
) en utilisant la valeur réelle de l'attribut value en tant que clé de tableau dans le tableau d'options dropDownList.
Donc, dans ce cas, j'ai un tableau d'états et les attributs de valeur ont l'abréviation d'état, par exemple value="FL"
. J'obtiens mon état sélectionné dans la table Address, qui stocke l'abréviation. Tout ce que je dois faire, c'est l'utiliser comme clé de tableau dans le tableau options:
echo $form->field($model, 'state')->dropDownList($listData, ['Prompt'=>'Select...', 'options'=>[$address->state=>["Selected"=>true]]]);
La documentation le précise: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail
j'espère que cela t'aidera
$form->field($model, 'userid')
->dropDownList(
[User::getUser()],
//[ArrayHelper::map(User::find()->where('id' => $id)->all(), 'id', 'name')],
['Prompt'=>'Select a user','id'=>'user_dropdown'],
['options' =>
[
$id => ['selected' => true]
]
]
)->label('');
<?php
$selectValue = $_GET['tid']
echo $form->field($model, 'tag_id')
->dropdownList(
ArrayHelper::map(Tag::find()->where(['visibility'=>'1'])->orderBy('value ASC')->all(), 'tag_id', 'value'),
['options' => [$selectValue => ['Selected'=>'selected']]],
['Prompt' => '-- Select Tag --'])
->label(false);
?>
Ce code sélectionne automatiquement la valeur sélectionnée reçue en entrée. Où $ selectValue sera la valeur numérique reçue de la méthode GET.
Sortie finale: <option value="14" selected="selected">NONE</option>
$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList(
$items, //Flat array('id'=>'val')
['Prompt'=>''] //options
)->label('');
Ok, si vous utilisez ActiveForm, la valeur de votre champ de modèle sera utilisée comme valeur sélectionnée. Avec l’aide HTML, la fonction dropDownList accepte un autre choix de paramètre doc . Exemple:
$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])
Utilisez ce code ci-dessous:
$category = \backend\models\ProductCategory::find()->WHERE(['deleted'=>'N'])->all();
$listData = ArrayHelper::map($category,'product_category_id','category_name');
echo $form->field($model, 'product_category_id')->dropDownList($listData,['Prompt'=>'Select']);
Ceci est mon approche S.O.L.I.D.
Manette
$model = new User;
$model->userid = $id; #this line does the magick. Make sure the $id has a value, so do the if else here.
return $this->return('view', compact('model'))
Voir (voir tel quel)
$form->field($model, 'userid')
->dropDownList(...)
->label('');