【PHP】Yii2使用ActiveDataProvider超出页码一直展示最后一页的解决方案源码分析亲测有效
【摘要】
项目场景:
ActiveDataProvider一般配合视图的GridView展示数据的列表页,并在列表下方展示GridView自带渲染的分页组件。
问题描述:
默认情况下,当在地址栏输入页码大...
项目场景:
ActiveDataProvider一般配合视图的GridView展示数据的列表页,并在列表下方展示GridView自带渲染的分页组件。
问题描述:
默认情况下,当在地址栏输入页码大于现有列表总页码下,ActiveDataProvider给返回的数据默认是最后一页的数据。
有些场景下,我们需要了解是否分页已经达到了最后一页,所以不需要返回最后一页的数据,而是直接返回空数据。
原因分析:
源码分析:ActiveDataProvider使用的Pagination有个值validatePage默认是true。
源码位置vendor/yiisoft/yii2/data/Pagination.php
/**
* @var bool whether to check if [[page]] is within valid range.
* When this property is true, the value of [[page]] will always be between 0 and ([[pageCount]]-1).
* Because [[pageCount]] relies on the correct value of [[totalCount]] which may not be available
* in some cases (e.g. MongoDB), you may want to set this property to be false to disable the page
* number validation. By doing so, [[page]] will return the value indexed by [[pageParam]] in [[params]].
*/
public $validatePage = true;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
解决方案:
在初始化ActiveDataProvider的时候将Pagination的validatePage改为false。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'Pagination'=>[
'validatePage'=>false
]
]);
- 1
- 2
- 3
- 4
- 5
- 6
问题解决!
文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。
原文链接:coderfix.blog.csdn.net/article/details/120650749
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)