2017-02-18 8 views
0

Я попытался настроить Kartik Gridview с помощью Editable Columns. Одна колонка имеет тип INPUT_SELECT2.yii2 Kartik: Редактируемый (Multi-) Select2 в 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, 
    ]); 

Сохранение значений отлично работает. Но если дело доходит до загрузки и отображения сохраненных данных, я должен был обмануть, чтобы все было в порядке. В 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

Так есть кто-нибудь рабочий пример с Картик GridView, редактируемые и выбор2?

ответ

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, 
      ], 
    ],