在YII2的gridview列(不作为过滤器列)内添加多个Select2小部件

时间:2019-12-17 09:32:38

标签: yii2 jquery-select2 yii2-grid

您好,我正在尝试在Yii2中的每个驱动程序的gridview列中添加一个select2小部件。 网格用于驱动程序模型。 一个驱动程序可能具有多个区域。如下图所示:

https://MyApp/Contact

这是网格:

enter image description here

我已经在Driver Model中创建了一个关系:

 create(&poly1);
 ...
 void create(struct node **head)
 ...
 if (*head == NULL)
     *head = newnode;

这是Select2网格列代码:

poly1

控制器操作:

public function getZones()
{
    return $this->hasMany(Zone::className(), ['id' => 'zone_id'])
        ->viaTable('driver_zone_mapping', ['driver_id' => 'id']);
}

这里是模型搜索功能:

 [
            'label' => 'Zones',
            'format' => 'raw',
            'value' => function ($model) {
                return Select2::widget([
                    'model' => $model,
                    'attribute' => 'zones',
                    'value' => $model->zones,
                    'data' => ArrayHelper::map(Zone::find()->asArray()->all(), 'id', 'zone'),
                    'options' => [
                        'placeholder' => 'Select Zone ...',
                        'class' => 's2-tog-button',
                        'data-id' => $model->id,
                        'multiple' => true,
                    ],
                    'pluginOptions' => [
                        'tags' => true,
                    ],
                ]);
            }
        ],

问题在于,仅对一个驱动程序(具有区域的第一个驱动程序)显示select2小部件。其他人即使在driverzonemapping表中有区域也没有小部件。 有想法吗?

0 个答案:

没有答案