如何使用枚举添加在下拉列表中选择的默认值?

How to add default value selected in dropdownlist with enum?

我是 yii2 的新手,正在尝试四处走动。我有一个下拉列表,其数据库中的值为枚举。因此,当创建 crud 时,下拉列表具有枚举值。

但我想在下拉列表中保留一个默认值。 我的表单代码如下:

<?= $form->field($model, 'priotiy_level')->dropDownList([ 'low' => 'Low', 'medium' => 'Medium', 'high' => 'High', ], ['prompt' => 'Select Priority Level']) ?>

我不想显示提示,而是希望将中等作为选定值。有人可以帮我吗?

谢谢。

在控制器中初始化 $model 实例后设置属性,然后将 $model 传递给视图。

$model->priority_level = 'medium';

正如@Bizley 所说,您需要在控制器中设置属性的值。在 Yii2 中,你可以在一行中完成:

public function actionSomething {
    $model = new MyClass(['priotiy_level' => 'medium']);

    // code

    return $this->render('something', [
        'model' => $model
    ]);
}

class 添加到您的 dropdownList :

例如。

<?= $form->field($model, 'priotiy_level')->dropDownList([ 'low' => 'Low', 'medium' => 'Medium', 'high' => 'High', ], ['class' => 'priority_list','prompt' => 'Select Priority Level']) ?>

使用Java脚本Jquery

给出默认值

例如

<script>
$(".priority_list").val('medium'); // assing value using jquery
</script>

您也可以使用ID:

例如。

 <script>
    var temp=document.getElementById('project-industry_id');
    temp.value='medium';
    </script>

除了之前的答案,您还可以使用 default 验证器:

class SomeActiveRecord extends ActiveRecord {

    // ...
    function rules(){

        return [
            ['priotiy_level', 'default', 'value' => 'medium']

            // set "username" and "email" as null if they are empty
            [['username', 'email'], 'default'],

            // set "level" to be 1 if it is empty
            ['level', 'default', 'value' => 1],
        ];

    }

}

更多详情见此处:Handling Empty Inputs

此代码为所有 actions/forms 设置默认值。如果您需要在不同的表单上使用不同的默认值,也可以使用 scenarios of validation.