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自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
php在线生成ico文件的代码
Oct 09 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
php在线解压ZIP文件的方法
Dec 30 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
php身份证号码检查类实例
Jun 18 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
laravel框架使用极光推送消息操作示例
Feb 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
js正确获取元素样式详解
2009/08/07 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
全面理解闭包机制
2016/07/11 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
AngularJS中filter的使用实例详解
2017/08/25 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
python检测服务器是否正常
2014/02/16 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
python飞机大战游戏实例讲解
2020/12/04 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
中国文明网签名寄语
2014/01/18 职场文书
预备党员公开承诺书
2014/05/28 职场文书
中队活动总结
2014/08/27 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
采购内勤岗位职责
2015/04/13 职场文书
职工食堂管理制度
2015/08/06 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby