Выпадающее меню Yii2

Я хочу показать выбранное значение в раскрывающемся списке Yii2,

$_ Значение GET:

  $id = $_GET["cid"];

Выпадающий код

  $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('');           

но этот метод не работает!

Ответ 1

Попробуйте это.

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

Ответ 2

Надеюсь, это поможет вам

$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

В основном, вы влияете на параметры (ваши элементы <option>), используя фактическое значение атрибута значение как ключ массива в массиве опций dropDownList.

Таким образом, в этом случае у меня есть массив состояний, а атрибуты значения имеют сокращенное состояние, например value="FL". Я получаю свое выбранное состояние из таблицы Address, в которой хранится аббревиатура, поэтому все, что мне нужно сделать, это использовать это как мой массив в массиве options:

echo $form->field($model, 'state')->dropDownList($listData, ['prompt'=>'Select...', 'options'=>[$address->state=>["Selected"=>true]]]);

В документации написано: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail

Ответ 4

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

Ответ 5

Хорошо, если вы используете ActiveForm, тогда значение вашего поля модели будет использоваться в качестве выбранного значения. С помощью функции html helper dropDownList принимает другой параметр doc. Пример:

$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])

Ответ 6

<?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);
?>

Этот код будет автоматически. Выберите выбранное значение, полученное в качестве входного сигнала. Где $selectValue будет числовым значением, полученным от метода GET.

Конечный вывод: <option value="14" selected="selected">NONE</option>

Ответ 7

Используйте следующий код:

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

Ответ 8

Это мой подход S.O.L.I.D.

контроллер

$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'))

Вид (вид is-is)

$form->field($model, 'userid')
->dropDownList(...)
->label('');