Yii 2 dropDownList - 未选择默认值

Ent*_*ton 3 php yii2

我正在使用Yii 2 ActiveForm,试图使选项7"默认".

为此,我必须使用options数组,但是当我这样做时,在查看HTML源时,我的html属性"selected"根本没有被渲染.我没有错.

如果我使用其他选项,例如"标签",它可以按预期工作.

$form->field($model, 'date')->dropDownList($months, [
'options'=>array(
'7' => ['label' => 'JULY', 'selected'=>true],
),
]);
Run Code Online (Sandbox Code Playgroud)

根据文档,任何"有效"选项都被接受,我认为"选中"是有效的,因为它是一个HTML下拉列表?

这是生成的:

<select id="log-date" class="form-control" name="Log[date]">
<option value="1">JANUARY</option>
<option value="2">FEBRUARY</option>
<option value="3">MARCH</option>
<option value="4">APRIL</option>
<option value="5">MAY</option>
<option value="6">JUNE</option>
<option value="7" label="label works fine">JULY</option>
<option value="8">AUGUST</option>
<option value="9">SEPTEMBER</option>
<option value="10">OCTOBER</option>
<option value="11">NOVEMBER</option>
<option value="12">DECEMBER</option>
</select>
Run Code Online (Sandbox Code Playgroud)

小智 6

  1. 这里回答:选择了Yii2 dropDownList标记选项.您需要设置日期属性:

    $model->date = 7;
    $form->field($model, 'date')->dropDownList($months);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 还有来自开发人员的讨论:dropDownList pre选择不呈现'selected' 他们建议您在init()方法中定义属性的默认值或直接在视图中设置它(这与上面的答案相同).我也是这样做的

    $model->priority = $model->isNewRecord ? 2 : $model->priority;
    $form->field($model, 'priority',[
           'options'=>['class'=>'col-xs-12 col-md-3']
        ])->dropDownList($priorityList)
    
    Run Code Online (Sandbox Code Playgroud)