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 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
php curl post 时出现的问题解决
Jan 30 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
php和asp语法上的区别总结
May 12 PHP
php传值和传引用的区别点总结
Nov 19 PHP
YII2框架中actions的作用与使用方法示例
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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
js实现随机抽奖
2020/03/19 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
在Python中使用SQLite的简单教程
2015/04/29 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python函数参数分类原理详解
2020/05/28 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
软件工程专业推荐信
2013/10/28 职场文书
施工安全承诺书
2014/05/22 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技