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 Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
php根据生日计算年龄的方法
Jul 13 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 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
德劲1103二次变频版的打磨
2021/03/02 无线电
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
独特的python循环语句
2016/11/20 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
WxPython实现无边框界面
2019/11/18 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
中学教师教育感言
2014/02/21 职场文书
升学宴主持词
2014/04/02 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python