温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

laravel如何实现自定义分页

发布时间:2021-06-30 10:31:41 阅读:525 作者:小新 栏目:开发技术
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍laravel如何实现自定义分页,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

对于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;
  }

}

以上是“laravel如何实现自定义分页”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×