Yii2 Gridview:我当前使用哪个 dataProvider?

问题描述 投票:0回答:1

我在同一页面上有两个 gridView 小部件,每个小部件都有自己的数据提供程序,如下所示:

<?= GridView::widget([
    'dataProvider' => $userModel,
    'columns' => $columns,
]); ?>

<?= GridView::widget([
    'dataProvider' => $companyModel,
    'columns' => $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',
 ];

非常感谢任何帮助。

php gridview yii2 dataprovider
1个回答
0
投票

解决了。

首先创建您的常用列:

// common columns used by both grids here 
$columns = [];
$columns[] = [
    'totalCount',
    'totalCost',
 ];

然后创建并合并自定义列,如下所示:

 // user specific columns
$userColumns = [];
$userColumns[] = //... 
// now merge with common columns
$userColumns = array_merge($userColumns,$columns);

现在从网格小部件中调用适当的列:

<?= GridView::widget([
    'dataProvider' => $userModel,
    'columns' => $userColumns,
]); ?>
© www.soinside.com 2019 - 2024. All rights reserved.