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和ACCESS写聊天室(三)
Oct 09 PHP
PHP新手上路(七)
Oct 09 PHP
PHP Ajax实现页面无刷新发表评论
Jan 02 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PHP中16个高危函数整理
Sep 19 PHP
PHP代码加密的方法总结
Mar 13 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php检查页面是否被百度收录
2015/10/28 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
python进程与线程小结实例分析
2018/11/11 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python 实现一个计时器
2020/07/28 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
德国网上药房:Apotal
2017/04/04 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
篝火晚会主持词
2014/03/25 职场文书
2015年护士节活动总结
2015/02/10 职场文书
解约证明模板
2015/06/19 职场文书
python文件目录操作之os模块
2021/05/08 Python
python的html标准库
2022/04/29 Python