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 相关文章推荐
一个MYSQL操作类
Nov 16 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
PHP学习 变量使用总结
Mar 24 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
使用Thinkphp框架开发移动端接口
Aug 05 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
浅谈PHP匿名函数和闭包
Mar 08 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 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 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python之随机数函数的实现示例
2020/12/30 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
营业员个人总结的自我评价
2013/10/25 职场文书
成品仓管员工作职责
2013/12/29 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
王老吉广告词
2014/03/20 职场文书
锦旗标语大全
2014/06/23 职场文书
会计人员演讲稿
2014/09/11 职场文书
自查自纠整改报告
2014/11/06 职场文书
保研推荐信范文
2015/03/25 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
python中sys模块的介绍与实例
2021/04/17 Python