您好,我正在尝试在Yii2中的每个驱动程序的gridview列中添加一个select2小部件。 网格用于驱动程序模型。 一个驱动程序可能具有多个区域。如下图所示:
这是网格:
我已经在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表中有区域也没有小部件。 有想法吗?