ThinkPHP 5.1 分页配置默认不通过独立 paginate.php 文件,而是由 config/paginate.php 或 app/config.php 中的 'paginate' 数组控制;支持 type、var_page、list_rows 等参数配置,控制器中显式传参优先级更高,且 list_rows 若未生效需检查是否误用 paginate(10) 数字调用。

ThinkPHP 5.1 的分页默认参数不通过 paginate.php 单独文件配置,而是由全局分页配置项控制,主要在 config/paginate.php(或 app/config.php 中的 'paginate' 数组)里定义。
修改默认分页配置位置
推荐方式是新建或编辑以下文件:
-
应用级配置:在
config/paginate.php中返回配置数组(TP5.1 支持该路径) -
全局配置合并:若项目沿用旧结构,可直接在
app/config.php的'paginate'键下设置
常用可配置参数及说明
以下参数均写在配置数组中,例如:
'paginate' => [
'type' => 'Bootstrap', // 分页类名,如 Bootstrap / Simple / 下载的自定义类
'var_page' => 'page', // URL 中页码参数名,默认 page
'list_rows' => 15, // 每页显示条数,默认 15
'query' => [], // 默认附加到分页链接的额外参数(一般留空,控制器中动态传)
'path' => '', // 分页链接基础路径,留空则自动获取当前 URL
]
注意:query 不建议在配置中硬编码搜索条件,应在控制器调用 paginate() 时用 ['query' => request()->param()] 动态传入,否则无法响应实际请求参数。
控制器中覆盖默认参数
配置只是兜底,实际使用时更灵活的做法是在控制器中显式传参,优先级高于配置文件:
- 每页 20 条、启用简单模式、保留所有 GET 参数:
$list = Db::name('article')->where('status', 1)
->paginate([
'list_rows' => 20,
'simple' => true,
'query' => request()->param()
])
- 若需指定分页类(比如用了第三方美化插件):
->paginate([
'type' => 'page\Page',
'list_rows' => 12,
'query' => request()->param()
])
验证是否生效的小技巧
改完配置后,可在模板中输出分页对象信息辅助调试:
-
{$list->currentPage()}—— 当前页码 -
{$list->listRows()}—— 实际每页条数(看是否读取了你设的值) -
{$list->render()|raw}—— 渲染结果是否带预期 class 或结构
如果 list_rows 没变化,检查是否控制器调用时传了数字参数(如 paginate(10))——它会完全忽略配置,只认这个数字。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











