2017-07-12 14 views
0

次のように私は、同じページ上の2つのGridViewのウィジェット、独自のDataProviderとそれぞれを持っています。Yii2 Gridview:私は現在どのdataProviderを使用していますか?

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

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

列は、両方のビューでは、主に似ていますが、最初の3つの列にはいくつかの違いがあります。私がしたいのは、どのウィジェットが現在コンパイルされているかを判断して、そのウィジェットの適切な列を動的に作成できるようにすることです。例:

<?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', 
]; 

ご協力いただければ幸いです。

答えて

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, 
]); ?> 
関連する問題