首页 文章

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

提问于
浏览
0

我尝试使用可编辑列设置Kartik Gridview . 一列的类型为 INPUT_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,Editable和Select2的工作示例?

1 回答

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

相关问题