Drop down menu Yii2下拉列表标记选项已选中

Drop down menu Yii2下拉列表标记选项已选中,drop-down-menu,selected,yii2,Drop Down Menu,Selected,Yii2,您好,我正在尝试使用所选值创建一个下拉列表,但仍然没有进展,下拉列表正在渲染,但始终选择了第一个选项 $company_id = (int) $params['company_id']; $options = [ 'options' => [ $company_id => [ 'selected' => 'selected', 'label' => 'test' ] ] ]

您好,我正在尝试使用所选值创建一个下拉列表,但仍然没有进展,下拉列表正在渲染,但始终选择了第一个选项

$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方法中找到的框架代码中找到了Ok解决方案:

$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;

在呈现该部分之前,请注意以下事项:

如果您使用的是
ActiveForm
,则模型字段的值将用作所选值,但如果您没有使用
ActiveForm
并使用
Html
helper生成下拉列表,则
dropDownList
函数也接受另一个参数
选择
,您可以在其中传递要选择的值,如

中所述。请尝试此操作

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']) ?>
$x=1;$x的


作为建议,如果您已经回答了您的问题,请将其作为答案写下来并接受它(这样其他人会更容易找到答案)@szapio我也面临着同样的问题,你能解释一下如何使用依赖下拉列表吗请查看下面的问题链接@szapio你能说我在哪里可以使用这两个代码$model->company_id=$company_id;和$attrs=isset($options[$key])?$options[$key]:[];$attrs['value']=(string)$key;$attrs['selected']=$selection!==null&&(!is_数组($selection)&&!strcmp($key,$selection)| is_数组($selection)&&in_数组($key,$selection));因为我也面临同样的问题