Yii2下拉列表设置选中项

3

你好,我正在尝试制作一个下拉列表,并设置默认选项,但是进展缓慢。下拉列表已经呈现出来了,但总是选择第一个选项。

$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' => 'test',这个方法有效,但是仍然无法选中。
好的,解决方案已找到,在框架代码中我发现了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;

在渲染段落之前


3
作为建议,如果您已经回答了自己的问题,请将其写成答案并接受它(这样其他人就更容易找到答案)。 - Ali MasudianPour
@szapio 我也遇到了同样的问题,你能解释一下如何为依赖下拉菜单做到这一点吗?请查看以下问题链接 点击这里 - Kalai S
@szapio 你能说一下我可以在哪里使用这两个代码吗?$model->company_id = $company_id; 和 $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)); 因为我也遇到了相同的问题。 - Kalai S
2个回答

9

针对未来的访客提醒:

如果您使用 ActiveForm,那么模型字段的值将用作所选值。但是,如果您没有使用 ActiveForm 并使用 Html 辅助工具生成下拉列表,则 dropDownList 函数也接受另一个参数 selection,您可以在其中传递您想要选择的值,如文档中所述。


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']) ?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接