在ThinkPHP框架中使用PHP实现分页,核心是利用框架提供的分页功能将数据库查询结果分段返回,并在页面上输出分页导航。下面以ThinkPHP6为例说明具体做法。

一、控制器中使用分页
在控制器里通过查询构造器的paginate方法即可获得分页对象,它包含当前页数据和总条数等信息。
<?php
namespace appcontroller;
use appBaseController;
use appmodelUser;
class Index extends BaseController
{
public function index()
{
// 每页显示10条,查询用户表
$list = User::where('status', 1)->paginate(10);
// 将数据和分页渲染到模板
return view('index', [
'list' => $list
]);
}
}
二、模板中渲染分页
分页对象可以直接在模板中使用render方法输出分页HTML,列表数据用循环展示。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户列表</title>
</head>
<body>
<ul>
{volist name="list" id="item"}
<li>{$item.id} : {$item.name}</li>
{/volist}
</ul>
<!-- 输出分页导航 -->
{$list|raw}
</body>
</html>
常用分页参数
| 参数 | 说明 |
|---|---|
| list_rows | 每页数量,如paginate(10)表示每页10条 |
| page | 当前页,可手动传入控制 |
| query | 附加到分页链接的查询参数 |
三、自定义分页样式
如果默认分页样式不满足需求,可以修改配置文件中的分页模板,或在模板中自行遍历分页数据。分页对象提供currentPage和lastPage等属性。
// 获取分页信息 $page = $list->currentPage(); $totalPage = $list->lastPage(); echo '当前页:' . $page . ',总页:' . $totalPage;
四、注意事项
- 使用
paginate前确保已正确配置数据库连接。 - 模板中输出分页HTML要使用
raw过滤器,避免被转义。 - 若需保持搜索条件,通过query参数把原GET数据带回分页链接。
通过上述方式,就能在ThinkPHP里用PHP轻松完成分页功能,既减少手写SQL偏移量的麻烦,也保证了代码清晰可维护。
ThinkPHPpaginationPHP分页修改时间:2026-07-31 01:21:18