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新手上路(三)
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
用PHP 快速生成 Flash 动画的方法
Mar 06 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
php实现网页端验证码功能
Jul 11 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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
全文搜索和替换
2006/10/09 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
DOM 高级编程
2015/05/06 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
修改npm全局安装模式的路径方法
2018/05/15 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
详解JavaScript修改注册表的方法
2020/01/05 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
使用Python来开发微信功能
2018/06/13 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
学生自我鉴定
2013/12/18 职场文书
期末评语大全
2014/05/04 职场文书
校园演讲稿汇总
2014/05/21 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
活动总结范文
2014/08/30 职场文书
先进个人材料怎么写
2014/12/30 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android