laravel自定义分页效果


Posted in PHP onJuly 23, 2017

对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。

所以自己针对于此写了一个自己的分页,具体代码如下

<?php
namespace ...;

use ...;
/**
 * 自定义分页类,适合少数据的查询,多数据的时候不推荐
 * Class CustomPaginate
 * @package App\Tools\Paginate
 */
class CustomPaginate
{
  /**
   * 自定义数组分页
   * @param $data = 返回结果
   * @param $page
   * @param $limit
   * @return mixed
   */
  public static function paginate($data, $page = 1, $limit = 10)
  {
    if (!is_numeric($page) || !is_numeric($limit)) {
      return false;
    }
    $count = count($data);
    $data = array_slice($data, ($page - 1) * $limit, $limit);
    return new LengthAwarePaginator($data, $count, $limit, $page);
  }

  /**
   * 参数解释 对外暴露的方法
   * @param $data = array|collection 切记只支持这两种
   * @param $page = 当前页
   * @param $limit = 每一页展示几条
   * @return array|false
   * 返回结果为数组
   * 调用实例: CustomPaginate::paginateToArray($data, $request->page, $request->limit);
   */
  public static function paginateToArray($data, $page = 1, $limit = 10)
  {
    $isValidate = self::validate($data, $page, $limit);           //验证
    if ($isValidate === false) {
      return false;
    }

    $res = self::paginate($data, $page, $limit)->toArray();         //分页数据转换为数组

    //上一页 || 下一页 => path
if ($res['prev_page_url'] != null) {
  $prev_page = $page - 1;
  $res['prev_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $prev_page . "&limit=" . $limit;
}
if ($res['next_page_url'] != null) {
  $next_page = $page + 1;
  $res['next_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $next_page . "&limit=" . $limit;
}
    return $res;
  }

  /**
   * 验证参数是否合法
   */
  public static function validate(&$data, &$page = 1, &$limit = 10)
  {
    $page = empty($page) ? 1 : $page;
    $limit = empty($limit) ? 10 : $limit;
    if (!is_array($data) && !$data instanceof Collection) {
      return false;//"自定义分页方法只支持数组数据和集合数据";
    }
    if (!is_numeric($page) || !is_numeric($limit)) {
      return false;//"page limit 参数只支持数字";
    }
    if ($data instanceof Collection) {
      return $data = $data->toArray();
    }
    return $data;
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
关于js和php对url编码的处理方法
Mar 04 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP防盗链代码实例
Aug 27 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
PHP批量删除jQuery操作
Jul 23 #PHP
PHP mysqli事务操作常用方法分析
Jul 22 #PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 #PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 #PHP
PHP编程快速实现数组去重的方法详解
Jul 22 #PHP
php使用ftp实现文件上传与下载功能
Jul 21 #PHP
YII2框架中excel表格导出的方法详解
Jul 21 #PHP
You might like
php cookis创建实现代码
2009/03/16 PHP
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
Python实现从百度API获取天气的方法
2015/03/11 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
python基于win32api实现键盘输入
2020/12/09 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
应届生.NET方向面试题
2015/05/23 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
关于读书的演讲稿500字
2014/08/27 职场文书
党员四风剖析材料
2014/08/27 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
实习协议书
2015/01/27 职场文书
征求意见函
2015/06/05 职场文书
北京青年观后感
2015/06/15 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python