标签:php pagination gridview yii2
我在_form.php文件中包含了Gridview小部件,该文件运行良好.问题是过滤器和分页.
<?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>
如果我将$dataprovider分页部分放在$searchmodel下面,则分页工作正常,但是过滤器不起作用,反之亦然.
如何在_form.php中同时使用过滤器和分页.
任何解决方案将不胜感激.
谢谢
解决方法:
我对Yii2没有经验,但如果它与1相似
你为什么两次声明dataProvider?我想第一个是能够自定义页面大小.
那么会发生什么呢?您使用一个数据提供程序来设置分页,然后将另一个数据提供程序传递给表.
其次我不知道你的模型在里面看起来如何……
因为我可以看到search()方法返回一个dataProvider,你应该改变那里的分页.
或者我认为你可以在search()方法返回dataProvider之后立即更改它:
$searchModel = New \app\models\ServiceChargesSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->pageSize=5;
因此,您不需要之前声明过的第一个dataProvider实例.
至于过滤器,我不知道它是如何完全表现你的ServiceChargesSearch ::搜索功能
但在Yii1中你通常会:
1) Define model 2) Fill it up with data from
$_GET
3) Pass
$model->search()
to grid
如果过滤器仍然不起作用,您可以从模型中提供代码.
标签:php,pagination,gridview,yii2 来源: https://codeday.me/bug/20190713/1453865.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。