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 相关文章推荐
轻松修复Discuz!数据库
May 03 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 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 验证登陆类分享
2015/03/13 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js身份证验证超强脚本
2008/10/26 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
Python实现队列的方法
2015/05/26 Python
python检测是文件还是目录的方法
2015/07/03 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python实现随机漫步算法
2018/08/27 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
影视动画专业个人的自我评价
2013/12/31 职场文书
微电影大赛策划方案
2014/06/05 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
地道战观后感400字
2015/06/04 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
学生会自荐信
2019/05/16 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL
python 判断文件或文件夹是否存在
2022/03/18 Python