教程:Hyperf
我用的hyperf2需要自己安装
composer require hyperf/paginator
执行的时候会调用rm删除文件
rm -rf runtime/container
window调用会有问题,但是也有解决办法。
先删除 runtime/container,再改composer.json
"require": {
……
"hyperf/paginator": "~2.2.0"
……
}
composer update
composer dump-autoload
一、使用
#App\Controller\TestController
public function test3()
{
$currentPage = (int) $this->request->input('page', 1);
$perPage = (int) $this->request->input('perpage', 2);
// 这里根据 $currentPage 和 $perPage 进行数据查询,以下使用 Collection 代替
$collection = new Collection([
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Sam'],
['id' => 3, 'name' => 'Tim'],
['id' => 4, 'name' => 'Joe'],
]);
$users = array_values($collection->forPage($currentPage, $perPage)->toArray());
return new Paginator($users, $perPage, $currentPage);
}
#Hyperf\Paginator\Paginator
public function __construct($items, int $perPage, ?int $currentPage = null, array $options = [])
{
foreach ($options as $key => $value) {
$this->{$key} = $value;
}
$this->perPage = $perPage;
$this->currentPage = $this->setCurrentPage($currentPage);
$this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path;
$this->setItems($items);
}
根据代码可以增加参数,比如path。
二、方法说明
nextPageUrl 获取下一页路径
render 使用给定视图呈现分页器
hasMorePagesWhen 手动指示分页器确实有更多的页面
hasMorePages 是否有·更多分页
toArray 对象转数组
jsonSerialize 将对象转换为JSON可序列化的对象
toJson 对象转数组
previousPageUrl 上一页url
getUrlRange 获取一定范围的url
url 获取指定页的url
fragment 设置路径拼接信息。路径?参数#fragment
appends 增加请求参数
loadMorph 将一组关系加载到混合关系集合上
items 获取正在分页的项的切片
firstItem 获取第一条编号
lastItem 获取最后一条编号
perPage 获取每页数量
hasPages 判断是否有分页
onFirstPage 确定分页器是否在第一页上
currentPage 获取当前页
getPageName 获取用于存储该页的查询字符串变量
setPageName 设置用于存储该页的查询字符串变量
withPath 设置基础路径
setPath 设置基础路径 被withPath 调用
onEachSide 设置要在当前页面链接的每一边显示的链接数
resolveCurrentPath 解析当前请求路径或返回默认值
currentPathResolver 设置当前请求路径解析器回调
resolveCurrentPage 解析当前页面或返回默认值
currentPageResolver 设置当前页面解析器回调
getIterator 获取迭代器
isEmpty 判断是否为空
isNotEmpty 判断是否为非空
count 获取总条目
getCollection 获取收集器
setCollection 设置收集器
offsetExists 判断key是否存在
offsetGet 获取对应key值
offsetSet 修改key值
offsetUnset 取消key值使用