我是yii2的新手并试图绕过。我有一个下拉列表,其数据库中的值是枚举。因此,当创建crud时,dropdownlist具有枚举值。
但我想在下拉列表中选择一个默认值作为默认值。 我的表单代码如下:
<?= $form->field($model, 'priotiy_level')->dropDownList([ 'low' => 'Low', 'medium' => 'Medium', 'high' => 'High', ], ['prompt' => 'Select Priority Level']) ?>
我希望将medium作为选定值,而不是提示符。有人可以帮我这个吗?
谢谢。
答案 0 :(得分:2)
在控制器中初始化$ model实例后,设置属性,然后将$ model传递给view。
$model->priority_level = 'medium';
答案 1 :(得分:1)
正如@Bizley所说,您需要在Controller中设置属性的值。在Yii2中,您可以在一行中完成此操作:
public function actionSomething {
$model = new MyClass(['priotiy_level' => 'medium']);
// code
return $this->render('something', [
'model' => $model
]);
}
答案 2 :(得分:0)
将类提供给 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>
答案 3 :(得分:0)
除了之前的答案,您还可以使用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。
此代码设置所有操作/表单的默认值。如果您在不同表单上需要不同的默认值,也可以使用scenarios of validation。