如何让 Yii2 处理数据提供者的两个不同实例?
How to make Yii2 handle two different instances of a dataprovider?
这是站点控制器index.php。
在这里,我想在同一个 page.But 上显示来自不同 table 的两个列表,它只显示两个 div.when 的一个 table 数据 我只在两个 div 上设置 $dataProvider小部件,如果我设置在 actionIndex() 中创建的 $dataProvider2,它会收到错误 $dataProvider2 not found.
<?= 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() 这里我写了两个 dataProvider($dataProvider,$dataProvider2) 但是我无法在 index.php widget
中设置这个 dataProvider
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 ]);
}
您需要将 dataProvider2
更改为 dataProvider
<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 ]);
这是站点控制器index.php。 在这里,我想在同一个 page.But 上显示来自不同 table 的两个列表,它只显示两个 div.when 的一个 table 数据 我只在两个 div 上设置 $dataProvider小部件,如果我设置在 actionIndex() 中创建的 $dataProvider2,它会收到错误 $dataProvider2 not found.
<?= 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() 这里我写了两个 dataProvider($dataProvider,$dataProvider2) 但是我无法在 index.php widget
中设置这个 dataProviderpublic 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 ]);
}
您需要将 dataProvider2
更改为 dataProvider
<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 ]);