Ответ 1
Попробуйте это.
$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
Я хочу показать выбранное значение в раскрывающемся списке 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('');
но этот метод не работает!
Попробуйте это.
$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
Надеюсь, это поможет вам
$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('');
В основном, вы влияете на параметры (ваши элементы <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
$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList(
$items, //Flat array('id'=>'val')
['prompt'=>''] //options
)->label('');
Хорошо, если вы используете ActiveForm, тогда значение вашего поля модели будет использоваться в качестве выбранного значения. С помощью функции html helper dropDownList принимает другой параметр doc. Пример:
$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])
<?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>
Используйте следующий код:
$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']);
Это мой подход 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('');