web-dev-qa-db-fra.com

Yii2 menu déroulant valeur sélectionnée

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!

13
Muhammad Shahzad

Essaye ça.

$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
19
Nakarin Kongsumrit

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

6
Steven McElveen

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('');
3
Kalai S
<?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> 

2
Vikram
$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList( 
      $items,                   //Flat array('id'=>'val')
['Prompt'=>'']                  //options
)->label('');
2
Sagar Jagodra

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'), [......])
0
Fortran

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']);
0
Hunny

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('');
0
Jake Pucan