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 相关文章推荐
xajax写的留言本
Nov 25 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
php类常量的使用详解
Jun 08 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 PHP
php post换行的方法
Feb 03 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 代码规范小结
2012/03/08 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
一些Python中的二维数组的操作方法
2015/05/02 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python版学生管理系统
2018/01/10 Python
python实现猜数字小游戏
2020/03/24 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
个人贷款担保书
2014/04/01 职场文书
远程培训的心得体会
2014/09/01 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
授权收款委托书
2014/09/23 职场文书
大连导游词
2015/02/12 职场文书
高三化学教学反思
2016/02/22 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL