yii2 Kartik:GridView中的可编辑(多个)Select2不显示加载的数据

时间:2017-02-18 17:27:11

标签: php yii2 kartik-v

我尝试使用可编辑列设置Kartik Gridview。一列的类型为$gridColumns = [ [ 'class'=>'kartik\grid\EditableColumn', 'attribute'=>'occupation_ids', 'value' => 'occuList', 'editableOptions'=>[ 'header'=>'Occupations', 'inputType'=>Editable::INPUT_SELECT2, 'options' => [ 'attribute'=>'occupations', 'data' => ArrayHelper::map(Occupation::find()->all(), 'id', 'description'), 'options' => [ 'multiple' => true, ], 'pluginOptions' => [ 'tags' => true, ], ], 'asPopover' => false, ], ], ...]; echo GridView::widget([ 'dataProvider'=>$dataProvider, 'columns'=>$gridColumns, 'filterModel' => $searchModel, ]);

在视图中我有以下定义:

MonthlyEmployment

保存值非常有效。但是,如果要加载和显示保存的数据,我不得不四处寻觅来运行。 GridView包含MonthlyEmployment的列表。 * @property Occupation[] $occupations */ class MonthlyEmployment extends \yii\db\ActiveRecord { public $occupation_ids; public function getOccuList() { $arr = []; foreach ($this->occupations as $ocu) { $arr[] = $ocu->description; } if ($arr != null && !empty($arr)) { return implode(', ', $arr); } else { return ''; } } 具有以下方法

{{1}}

所以保存的职业显示在gridview中。但是如果我打开模块来编辑字段,则不会选择值。下图,看看我的意思。

GridView Editable Column (Multi)Select2

所有人都有使用Kartik GridView,Editable和Select2的工作示例吗?

1 个答案:

答案 0 :(得分:0)

有一个没有标签; 这是控制器:

public function actionIndex()
    {
      $model = new Model;
      $searchModel = new OrderSearch();
      $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

              if (isset($_POST['hasEditable'])) {
                      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

                      if ($model->load($_POST)) {
                          $value = $model->status;
                          return ['output'=>$value, 'message'=>''];
                      }
                      else {
                          return ['output'=>'', 'message'=>''];
                      }
                  }

              return $this->render('indextoday', [
                  'searchModel' => $searchModel,
                  'dataProvider' => $dataProvider,
              ]);
    }

这是专栏:

<?php $data_from_desiredModel=ArrayHelper::map(desiredModel::find()
->orderBy('id')->asArray()->all(), 'id', 'name');?>

[
      'class'=>'kartik\grid\EditableColumn',
      'attribute'=>'name',
      'editableOptions'=>[
          'header'=>'Name',
          'inputType'=>\kartik\editable\Editable::INPUT_SELECT2,
          'data' => $data_from_desiredModel,
          ],
  ],