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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
php 获取select下拉列表框的值
May 08 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php短信接口代码
May 13 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
php实现网页端验证码功能
Jul 11 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
浅谈PHP array_search 和 in_array 函数效率问题
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
sony ICF-2010 拆解与改装
2021/03/02 无线电
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
PHP下MAIL的另一解决方案
2006/10/09 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Python元组常见操作示例
2019/02/19 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
python支持多线程的爬虫实例
2019/12/21 Python
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
环境日宣传活动总结
2014/07/09 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
2014年营销工作总结
2014/11/22 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
风之谷观后感
2015/06/11 职场文书
步步惊心观后感
2015/06/12 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS