Yii2 Gridview:我当前使用的是哪个数据提供程序?
我在同一页面上有两个gridView小部件,每个小部件都有自己的数据提供程序,如下所示:Yii2 Gridview:我当前使用的是哪个数据提供程序?,gridview,yii2,dataprovider,Gridview,Yii2,Dataprovider,我在同一页面上有两个gridView小部件,每个小部件都有自己的数据提供程序,如下所示: <?= GridView::widget([ 'dataProvider' => $userModel, 'columns' => $columns, ]); ?> <?= GridView::widget([ 'dataProvider' => $companyModel, 'columns' => $columns, ]); ?
<?= GridView::widget([
'dataProvider' => $userModel,
'columns' => $columns,
]); ?>
<?= GridView::widget([
'dataProvider' => $companyModel,
'columns' => $columns,
]); ?>
// user specific columns
$userColumns = [];
$userColumns[] = //...
// now merge with common columns
$userColumns = array_merge($userColumns,$columns);
两个视图中的列基本相似,但前三列中有一些差异。我想做的是确定当前正在编译哪个小部件,以便动态地为该小部件创建适当的列。例如:
<?php
$columns=[];
// here is where the problem is. I would like to do something along these lines:
if(GridView->dataProvider->id == 'userModel')
{
// add custom columns
$columns[] = 'userName';
} else {
// etc...
}
// common columns used by both grids here
$columns[] = [
'totalCount',
'totalCost',
];
已解决
首先创建公共列:
// common columns used by both grids here
$columns = [];
$columns[] = [
'totalCount',
'totalCost',
];
然后创建并合并自定义列,如下所示:
<?= GridView::widget([
'dataProvider' => $userModel,
'columns' => $columns,
]); ?>
<?= GridView::widget([
'dataProvider' => $companyModel,
'columns' => $columns,
]); ?>
// user specific columns
$userColumns = [];
$userColumns[] = //...
// now merge with common columns
$userColumns = array_merge($userColumns,$columns);
现在从网格小部件调用相应的列:
<?= GridView::widget([
'dataProvider' => $userModel,
'columns' => $userColumns,
]); ?>