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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
百度实时推送api接口应用示例
Oct 21 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
一个非常实用的php文件上传类
Jul 04 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
浅析PHP中的闭包和匿名函数
Dec 25 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
深入理解Python中字典的键的使用
2015/08/19 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python实现维吉尼亚加密法
2019/03/20 Python
css3学习心得分享
2013/08/19 HTML / CSS
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
广告学毕业生求职信
2014/01/30 职场文书
学校十一活动方案
2014/02/01 职场文书
自荐信的格式
2014/03/10 职场文书
演讲主持词
2014/03/18 职场文书
课外小组活动总结
2014/08/27 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
商场圣诞节活动总结
2015/05/06 职场文书