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 相关文章推荐
php4的session功能评述(一)
Oct 09 PHP
php学习笔记之 函数声明
Jun 09 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
php curl post 时出现的问题解决
Jan 30 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
php实现和c#一致的DES加密解密实例
Jul 24 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
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Django 重写用户模型的实现
2019/07/29 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
python关于调用函数外的变量实例
2019/12/26 Python
python将图片转base64,实现前端显示
2020/01/09 Python
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
读书月活动方案
2014/05/22 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
欢迎家长标语
2014/10/08 职场文书
毕业论文致谢词
2015/05/14 职场文书
员工规章制度范本
2015/08/07 职场文书
旅游安全责任协议书
2016/03/22 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android