返回
ThinkPHP6框架轻松搞定ajax分页
前端
2023-01-04 22:14:00
使用 ThinkPHP6 框架实现 Ajax 分页
简介
在 ThinkPHP6 框架中,Ajax 异步加载数据列表时,数字分页功能是必不可少的。本文将介绍一个专用的数字分页自定义封装类,帮助开发者轻松实现 Ajax 分页功能。
数字分页自定义封装类
数字分页自定义封装类位于项目根目录的 extend/lib/Paginator.php
文件中,代码如下:
namespace lib;
class Paginator
{
// 总记录数
private $total;
// 每页显示记录数
private $limit;
// 当前页码
private $page;
// 总页码
private $pcount;
// 分页步长
private $both;
public function __construct($total, $limit = 10, $page = 1, $both = 3)
{
$this->total = $total;
$this->limit = $limit;
$this->page = $page;
$this->pcount = ceil($total / $limit);
$this->both = $both;
}
public function getHtml()
{
if ($this->pcount <= 1) {
return '';
}
$html = '<ul class="pagination">';
if ($this->page > 1) {
$html .= '<li><a href="javascript:void(0);" onclick="loadPage(' . ($this->page - 1) . ');">上一页</a></li>';
}
for ($i = max(1, $this->page - $this->both); $i <= min($this->pcount, $this->page + $this->both); $i++) {
if ($i == $this->page) {
$html .= '<li class="active"><a href="javascript:void(0);">' . $i . '</a></li>';
} else {
$html .= '<li><a href="javascript:void(0);" onclick="loadPage(' . $i . ');">' . $i . '</a></li>';
}
}
if ($this->page < $this->pcount) {
$html .= '<li><a href="javascript:void(0);" onclick="loadPage(' . ($this->page + 1) . ');">下一页</a></li>';
}
$html .= '</ul>';
return $html;
}
}
使用方式
使用自定义封装类非常简单,只需要在控制器中实例化该类并调用 getHtml()
方法即可生成分页数字链接。
代码示例:
<?php
namespace app\controller;
use lib\Paginator;
class IndexController extends BaseController
{
public function index()
{
// 获取总记录数
$total = 100;
// 实例化分页类
$paginator = new Paginator($total, 10, 1, 3);
// 生成分页数字链接
$html = $paginator->getHtml();
// 将分页数字链接传递给视图
$this->assign('page', $html);
// 渲染视图
return $this->fetch();
}
}
视图文件:
<?php echo $page; ?>
结论
通过使用这个数字分页自定义封装类,开发者可以轻松地实现 Ajax 分页功能,提升用户体验。
常见问题解答
Q1:如何设置每页显示的记录数?
A1:通过构造函数中的 $limit
参数设置,默认值为 10。
Q2:如何设置分页步长?
A2:通过构造函数中的 $both
参数设置,默认值为 3。
Q3:如何获取总页数?
A3:可以通过 $pcount
属性获取。
Q4:如何判断是否为第一页?
A4:通过 $page
属性与 1 比较即可。
Q5:如何判断是否为最后一页?
A5:通过 $page
属性与 $pcount
比较即可。