我想在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('');
但这种方法不起作用!
答案 0 :(得分:19)
试试这个。
$model->userid=$id;
$form->field($model, 'userid')
->dropDownList(...)
->label('');
答案 1 :(得分:6)
Basically, you affect the options (your <option>
elements) by using the value attribute's actual value as the array key in the dropDownList options array.
So in this case I have an array of states and the value attributes have the state abbreviation, for example value="FL"
. I'm getting my selected state from the Address table, which stores the abbreviation, so all I have to do is use that as my array key in the options array:
echo $form->field($model, 'state')->dropDownList($listData, ['prompt'=>'Select...', 'options'=>[$address->state=>["Selected"=>true]]]);
The documentation spells it out: http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#dropDownList()-detail
答案 2 :(得分:3)
我希望这会对你有所帮助
$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 :(得分:2)
$model->userid = $_GET['cid'];
$form->field($model, 'userid')
->dropDownList(
$items, //Flat array('id'=>'val')
['prompt'=>''] //options
)->label('');
答案 4 :(得分:2)
<?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>
答案 5 :(得分:0)
好的,如果您使用的是ActiveForm,那么您的模型字段的值将用作选定的值。使用Html helper dropDownList函数接受另一个参数选择doc。例如:
$id = $_GET["cid"];
\yii\helpers\Html::dropDownList('userid', $id, [ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name'), [......])
答案 6 :(得分:0)
使用以下代码:
select
t.name table_name,
s.name schema_name,
sum(p.rows) total_rows
from
sys.tables t
join sys.schemas s on (t.schema_id = s.schema_id)
join sys.partitions p on (t.object_id = p.object_id)
where p.index_id in (0,1)
group by t.name,s.name
having sum(p.rows) = 0;
答案 7 :(得分:0)
这是我的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'))
查看(查看原样)
$form->field($model, 'userid')
->dropDownList(...)
->label('');
答案 8 :(得分:0)
我添加的所有选项都是不需要的。 在“值”索引中写入的内容是将选择哪个下拉项作为默认值。 提示仅显示没有与之关联的值的第一个选项。
echo $form->field($model, 'model_attribute_name')
->dropDownList($associativeArrayValueToText,
[
'value'=> $valueIWantSelected,
'prompt' => 'What I want as a placeholder for first option',
'class' => 'classname'
]);
您将在以下文件中找到分配此功能的函数:
vendor / yiisoft / yii2 / helpers / BaseHtml.php
公共静态函数renderSelectOptions($ selection,$ items,&$ tagOptions = [])
还可以从该函数中看到可以添加一个optgroup 到下拉列表中,只需提供一个多维数组,在其中我已将$ associativeArrayValueToText放入其中。这只是意味着您可以通过在下拉菜单中添加组标题来拆分选项。