Paw*_*wan 3 php pagination gridview yii2
我已将Gridview小部件包含在_form.php文件中,该方法运行良好.问题是过滤器和分页.
<?php
$dataProvider = new ActiveDataProvider([
'query' => \app\models\ServiceCharges::find(),
'pagination' => [
'pageSize' => 5,
],
]);
?>
<?php
$searchModel = New \app\models\ServiceChargesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
?>
</div>
</div>
<div>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'service_name',
'room_category',
'charges_cash',
'charges_cashless',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我将$dataprovider分页部分放在下面$searchmodel,分页工作正常,但是过滤器不起作用,反之亦然.
如何在_form.php中同时使用过滤器和分页.
任何解决方案将不胜感激.
谢谢
Ale*_*lin 14
我对Yii2没有经验,但如果它与1相似
你为什么要宣布dataProvider两次?我想第一个是能够自定义页面大小.
那么会发生什么呢?您使用一个数据提供程序来设置分页,然后将另一个数据提供程序传递给表.
其次我不知道你的模型在里面看起来如何......
因为我可以看到search()方法返回a dataProvider,你应该改变那里的分页.
或者我认为您可以在search()方法返回之后立即更改它dataProvider:
$searchModel = New \app\models\ServiceChargesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->pageSize=5;
Run Code Online (Sandbox Code Playgroud)
所以你不需要dataProvider你之前声明的第一个实例.
至于滤镜我不知道它是如何完全表现你的ServiceChargesSearch::search功能的
但在Yii1中你通常会:
1)定义模型2)用
$_GET3)填写数据传递$model->search()到网格
如果过滤器仍然不起作用,您可以从模型中提供代码.