2015-12-17 17 views
4

這是siteController index.php。 在這裏,我想顯示兩個列表從同一頁上的不同表格。但它只顯示一個表格數據爲div.when我只設置$ dataProvider在div小部件,如果我設置$ dataProvider2創建在actionIndex()它獲得找不到$ dataProvider2錯誤。如何讓Yii2處理數據提供者的兩個不同實例?

     <?= GridView::widget([ 
         'dataProvider' => $dataProvider, 
         'columns' => [ 
          ['class' => 'yii\grid\SerialColumn'], 
         [ 

          'attribute'=>'practiceCode', 
          'format' => 'raw', 
          'value'=>function ($model, $index, $widget) { 
         }, 
        ], 
        'firstName', 

         ], 

       ]); ?> 

      </div> 
      <div class="col-lg-6" style="border:solid 1px;"> 
       <h2>Member</h2> 
       <?= GridView::widget([ 
         'dataProvider2' => $dataProvider2,//Error $dataProvider2 not found 
         'columns' => [ 
          ['class' => 'yii\grid\SerialColumn'], 
         [ 

          'attribute'=>'memberCode', 
          'format' => 'raw', 
          'value'=>function ($model, $index, $widget) { 

         }, 
        ], 
        'firstName', 
       ]); ?>  
      </div> 

這是的actionIndex()這裏我寫兩個數據提供程序($數據提供程序,$ dataProvider2),但我不能夠設置

public function actionIndex() 
    { 
     $query = new \yii\db\Query; 
     $query->select('*') 
       ->from('practice'); 
     $query->createCommand(); 

     $dataProvider = new ActiveDataProvider([ 
      'query' => $query, 
      'pagination' => [ 
      'pageSize' => 10, 
      ], 
     ]); 
     $query = new \yii\db\Query; 
     $query->select('*') 
       ->from('member'); 
     $query->createCommand(); 

     $dataProvider2 = new ActiveDataProvider([ 
      'query' => $query, 
      'pagination' => [ 
      'pageSize' => 10, 
      ], 
]); 
     return $this->render('index', [ 
      'dataProvider' => $dataProvider,'dataprovider2'=>$dataProvider2 ]); 
} 

回答

6

你需要設置這個數據提供程序中的index.php插件改變dataProvider2dataProvider

<div class="col-lg-6" style="border:solid 1px;"> 
<h2>Member</h2> 
<?= GridView::widget([ 
    'dataProvider' => $dataProvider2,//Error $dataProvider2 not found 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 
     [ 

      'attribute'=>'memberCode', 
      'format' => 'raw', 
      'value'=>function ($model, $index, $widget) { 

      }, 
     ], 
     'firstName', 
    ] 
]); ?> 

由於dataProvider是GridView控件一個屬性。它會工作

,改變你的控制器動作爲

return $this->render('index', [ 
     'dataProvider' => $dataProvider,'dataProvider2'=>$dataProvider2 ]); 
+0

控制器的操作已返回$這個 - >渲染(「指數」,[ 「數據提供程序」 = > $ dataProvider,'dataProvider2'=> $ dataProvider2]);即使我chande在div'dataProvider'=> $ dataProvider2,但錯誤仍然是未定義變量:dataProvider2 –

+1

看到你的代碼,你正在使用'['dataProvider'=> $ dataProvider,'dataprovider2'=> $ dataProvider2]'你在這裏使用'dataprovider2'不是'dataProvider2' –

+0

謝謝,它的工作.... –

相關問題