ThinkPHP 6 提供便捷分页功能,通过控制器调用模型的 paginate 方法实现数据分页,每页条数、页码和总数据自动处理;在视图中使用 {$list->render()} 输出分页HTML,默认生成Bootstrap风格;支持自定义配置如每页数量、URL参数保留和锚点设置;可通过复制修改 paginate.tpl 模板文件深度定制分页结构;结合CSS可美化样式,适配Element Plus或Layui等前端框架,灵活性强,易于扩展。

ThinkPHP 框架提供了便捷的分页功能,能够快速实现数据列表的分页展示。本文以 ThinkPHP 6 为例,介绍如何使用内置分页组件,并自定义分页样式。
启用分页查询
在控制器中调用模型的 paginate 方法即可开启分页。该方法会自动处理当前页码、每页数量和总数据条数。
// 控制器代码示例$list = UserModel::where('status', 1)->paginate(10);
return view('index', ['list' => $list]);
上述代码表示每页显示 10 条数据,ThinkPHP 会自动从请求中获取 page 参数(如 ?page=2),并返回包含分页信息的数据对象。
模板中输出分页链接
在视图模板中,通过调用分页对象的 render 方法输出分页 HTML。
立即学习“PHP免费学习笔记(深入)”;
{volist name="list" id="vo"}
{$vo.name}
{/volist}
{$list->render()}
render 方法默认生成 Bootstrap 风格的分页 HTML,适用于大多数前端框架。
自定义分页样式和配置
如果需要修改分页的外观或行为,可以通过配置参数或继承分页类实现。
- 设置分页参数:可在 paginate 方法中传入数组进行配置
- 自定义分页模板:复制框架默认的分页视图文件到应用目录下修改
默认分页模板位于 vendor/topthink/framework/src/view/paginate.tpl,可复制到 app/view/layout/paginate.tpl,然后在配置文件中指定:
// config/app.php'paginate' => [ 'template' => app_path() . 'view/layout/paginate.tpl' ],
在自定义模板中可完全控制 HTML 结构,例如改为更简洁的“上一页 / 下一页”按钮,或添加跳转输入框。
使用 CSS 美化分页样式
即使使用默认输出,也可以通过 CSS 调整外观。
.pagination {display: flex;
list-style: none;
padding: 0;
margin: 20px 0;
}
.pagination .page-item {
margin: 0 5px;
}
.pagination .page-link {
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
text-decoration: none;
}
.pagination .active .page-link {
background: #007bff;
color: white;
border-color: #007bff;
}
结合前端框架如 Element Plus 或 Layui 时,也可通过自定义模板适配其分页结构。
基本上就这些,ThinkPHP 的分页机制灵活且易于扩展,既能快速上手,也支持深度定制。











