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 相关文章推荐
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP通过串口实现发送短信
Jul 08 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
Python格式化css文件的方法
2015/03/10 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
python实现海螺图片的方法示例
2019/05/12 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
培训心得体会
2013/12/29 职场文书
学生保证书范文
2014/04/28 职场文书
责任书范本
2014/08/25 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
话题作文之诚信
2019/11/28 职场文书