加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

laravel自定义分页效果

发布时间:2020-12-14 20:02:36 所属栏目:大数据 来源:网络整理
导读:对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。 所以自己针对于此写了一个自己的分页,具体代码如下 use ...; /** 自定义分页类,适合少数据的查询,多数据的时候不推荐 Class CustomPaginate @package AppToolsPaginate */ clas

对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。

所以自己针对于此写了一个自己的分页,具体代码如下

use ...;
/**

  • 自定义分页类,适合少数据的查询,多数据的时候不推荐
  • Class CustomPaginate
  • @package AppToolsPaginate
    */
    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,$limit = 10)
    {
    $isValidate = self::validate($data,$page,$limit); //验证
    if ($isValidate === false) {
    return false;
    }
$res = self::paginate($data,$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;
    }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读