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 相关文章推荐
利用js调用后台php进行数据处理原码
Oct 09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
在JavaScript中调用php程序
Mar 09 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
获取URL文件名后缀
Oct 24 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP新手上路(四)
2006/10/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
PHP扩展开发入门教程
2015/02/26 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers