自定义:数组分页

自定义paginate分页函数

系统默认的paginate是专门针对于查询构造器的,并不能给数组分页,因此才需要自定义一个分页函数。

1、引入分页类

use Illuminate\Pagination\LengthAwarePaginator; # 分页类

2、书写代码

在controller中应用:

// 控制器中:
public function index (Request $request) {
    $daba = array;
    //当前页数 默认1
    $page = $request->page ?: 1;
    //每页的条数
    $perPage = $num;
    //计算每页分页的初始位置
    $offset = ($page * $perPage) - $perPage;
    //实例化LengthAwarePaginator类,并传入对应的参数
    $data = new LengthAwarePaginator(array_slice($data, $offset, $perPage, true), 
    count($data), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);   
    return view('xxxxx', compact('data'));
}

封装为独立函数

/**
 * 分页
 * array_page($db, $request, $num)    针对数组的分页
 * $db = 数组
 * $request = 需求控制器的 xxx(Request $request)参数,将需求控制器的$request传入
 * $num = 每页要加载的数据条数
 * blade模板调用方式 {{ 数组->links() }}
 */
function array_page ($db, $request, $num) {
    //当前页数 默认1
    $page = $request->page ?: 1;
    //每页的条数
    $perPage = $num;
    //计算每页分页的初始位置
    $offset = ($page * $perPage) - $perPage;
    //实例化LengthAwarePaginator类,并传入对应的参数
    $data = new LengthAwarePaginator(array_slice($db, $offset, $perPage, true), count($db), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);
    return $data;
}

3、在blade模板中调用blade模板

@foreach($data as $val)
  <div>{{ $val['text'] }}</div>
@endforeach
{{ $data->links() }}

 

给TA买糖
共{{data.count}}人
人已赞赏
Lv57-系统函数和自定义函数

常用系统函数

2021-4-21 11:37:32

Lv57-系统函数和自定义函数

配置全局公共函数

2021-4-21 11:38:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索