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 相关文章推荐
用libtemplate实现静态网页生成
Oct 09 PHP
php错误级别的设置方法
Jun 17 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php简单分页类实现方法
Feb 26 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
laravel实现前后台路由分离的方法
Oct 13 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读写文件的方法(生成HTML)
2006/11/27 PHP
关于时间计算的结总
2006/12/06 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
PHP 编程安全性小结
2010/01/08 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
Javascript 对象的解释
2008/11/24 Javascript
Firefox window.close()的使用注意事项
2009/04/11 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
微信小程序实现星级评价
2019/11/20 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python字符转换
2008/09/06 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书