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 相关文章推荐
提升PHP速度全攻略
Oct 09 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
WordPress伪静态规则设置代码实例
Dec 10 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遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
range 标准化之获取
2011/08/28 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
就业协议书
2014/09/12 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
计划生育目标责任书
2015/05/09 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
导游词之峨眉山
2019/12/16 职场文书