Yii2下拉多个选定值

时间:2015-10-29 06:26:16

标签: yii2 yii2-model

我使用了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时,如何在下拉列表中显示多个选定的值?

3 个答案:

答案 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。

他们做得非常出色,我强烈推荐任何有此问题的人使用它。

请检查文档。 https://demos.krajee.com/widget-details/select2