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蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
linux中cd命令使用详解
Jan 08 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
php超快高效率统计大文件行数
Jul 05 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 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
关于svn冲突的解决方法
2013/06/21 PHP
php生成excel列序号代码实例
2013/12/24 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
求职信模版
2013/11/30 职场文书
应付会计岗位职责
2013/12/12 职场文书
《桥》教学反思
2014/04/09 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
万里长城导游词
2015/01/30 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题