2017-02-18 7 views
0

編集可能な列でKartik Gridviewを設定しようとしました。 1列のタイプはINPUT_SELECT2です。yii2 Kartik:GridViewのEditable(Multi-)Select2にロードされたデータが表示されない

$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, 
    ]); 

保存値完璧に動作します:私は、次の定義を持っているビューで

。しかし、保存されたデータの読み込みと表示に関しては、私は物事を動かすために騙していなければなりませんでした。 GridViewにはMonthlyEmploymentのリストがあります。 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 ''; 
     } 
    } 

ので、保存された職業は、GridViewの中で示したされています。しかし、フィールドを編集するためにモジュルを開くと、値は選択されません。私が何を意味するかを見るために、下の画像。

GridView Editable Column (Multi)Select2

だから誰KartikのGridView、編集可能とSelectセレクトでの作業例を持っていますか?

答えて

0

タグなしのものが1つあります。 これはコントローラである:

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, 
      ], 
    ], 
関連する問題