我使用了Yii2多项选择下拉列表,它在创建时工作正常但在更新时没有显示我选择的值!
形式:
$form->field($model, 'categories[]')
->dropDownList($model->CategoryDropdown,
[
'multiple'=>'multiple'
'class'=>'chosen-select input-md required',
]
)->label("Add Categories");
型号:
public function getCategoryDropdown()
{
$listCategory = Category::find()->select('ID,name')
->where(['is_subcategory' => 'Yes'])
->andWhere(['status' => 'active','approved' => 'active'])
->all();
$list = ArrayHelper::map( $listCategory,'ID','name');
return $list;
}
控制器:
public function actionCreate(){
...
$model->categories = implode(",",$_POST['Company']['categories']);
...
return $this->render('create', [
'model' => $model,
]);
}
public function actionUpdate($id)
{
$model = $this->findModel($id);
echo $model->categories; // 1,2,4,5 values already assigned
...
return $this->render('update', [
'model' => $model,
]);
}
数据库:
1,2,4,5
更新我的recored时,如何在下拉列表中显示多个选定的值?
答案 0 :(得分:9)
您的所有代码都可以,只需{$ 1}} $ form-> ...
echo
或在视图中使用echo $form->field($model, 'categories[]')
->dropDownList($model->CategoryDropdown,
[
'multiple'=>'multiple',
'class'=>'chosen-select input-md required',
]
)->label("Add Categories");
!
答案 1 :(得分:2)
这是解决方案:
表格
<?=
$form->field($model, 'categories')
->dropDownList($model->CategoryDropdown,
[
'class'=>'chosen-select input-md required',
'multiple'=>'multiple'
]
)->label("Add Categories");
?>
控制器:
public function actionCreate(){
...
$model->categories = implode(",",$_POST['Company']['categories']);
...
return $this->render('create', [
'model' => $model,
]);
}
public function actionUpdate($id)
{
$model = $this->findModel($id);
$model->categories = explode(',', $model->categories);
...
if($model->load(Yii::$app->request->post()))
{
$model->categories = implode(",",$_POST['Company']['categories']);
...
$model->save()
}
return $this->render('update', [
'model' => $model,
]);
}
答案 2 :(得分:1)
我强烈建议使用来自 krajee 的 Select2 它具有您可能需要的所有选项,在 dropDownList() 中使用 multiple 将使您能够选择多个值,但通过按住 Ctrl 并选择哪个不舒服作为选择他们使用 Select2。
他们做得非常出色,我强烈推荐任何有此问题的人使用它。