哈喽,大家好,今天为大家分享的是自定义手动分页的函数封装
有小伙伴要问了,laravel框架不是本身就提供了一个分页函数吗?干嘛还要自己在写一个。
因为在做某些需求的时候并不是能够直接进行分页的,而是查出数据之后,还需要做一些逻辑筛选或者合并之类的操作后,才可以进行分页,只有这样才能满足功能需求。
废话不多说,直接看分析:
通过原分页函数进入到了这里,看到其实主要用到的是“LengthAwarePaginator”这个类,所以我将它单独拿出来,重新做了封装,建议将函数放入到公共控制器里,方便随时调用,封装函数如下:
// 自定义手动分页函数
public function diypage($request,$list,$prePage=25){
$total =collect($list)->count();
if(isset($request->page)){
$current_page =intval($request->page);
$current_page =$current_page<=0?1:$current_page;
}else{
$current_page = 1;
}
$url = $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
if(strpos($url,'&page')) $url=str_replace('&page='.$request->page, '',$url);
$item =array_slice(collect($list)->toArray(),($current_page-1)*$prePage,$prePage);
return new LengthAwarePaginator($item,$total,$prePage,$current_page,[
'path'=>$url,
'pageName'=>'page'
]);
}
以上就是我封装好的函数,直接调用即可,调用方式如下:
$list=$this->diypage(Request $request,$alldata,10);
视图调用如下:
{{ $list->links() }}
好了,本次分享结束,大家有学到吗?