您好我正在尝试使用所选值创建一个下拉列表,但仍然没有进展,下拉是重新定位,但始终选择第一个选项。
$company_id = (int) $params['company_id'];
$options = [
'options' => [
$company_id => [
'selected' => 'selected',
'label' => 'test'
]
]
];
echo $form->field($model, 'company_id')->dropDownList($companies_list, $options);
该代码有什么问题?我编辑了我的代码并设置了'label'=>在我的选项中“测试”,这是有效的,但仍然没有选择
Ok解决方案,在我在renderSelectionOptions方法中找到的框架代码中找到:
$attrs = isset($options[$key]) ? $options[$key] : [];
$attrs['value'] = (string) $key;
$attrs['selected'] = $selection !== null &&
(!is_array($selection) && !strcmp($key, $selection)
|| is_array($selection) && in_array($key, $selection));
所以我需要做的就是:
$model->company_id = $company_id;
在渲染部分之前
答案 0 :(得分:9)
为未来的访问者留言:
如果您使用的是ActiveForm
,那么您的模型字段的值将用作所选值,但如果您未使用ActiveForm
并使用Html
帮助生成下拉列表,则{{ 1}}函数也接受另一个参数dropDownList
,您可以在其中传递您要选择的值,如docs
答案 1 :(得分:0)
请试试这个
for ($x = 1; $x <= 40; $x++) {
if ($x=="1"){
$items[$x] = $x." week";
}else{
$items[$x] = $x." weeks";
}
}
$weeks=28;
<?= Html::dropDownList('s_id', $selection = $weeks, $items, ['prompt' => '--Choose Week--','class'=>'form-control']) ?>