zoukankan      html  css  js  c++  java
  • laravel自定义分页

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

    所以自己针对于此写了一个自己的分页

    <?php  
    namespace ...;

    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, $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;
    }

    }
  • 相关阅读:
    bzoj 2784: [JLOI2012]时间流逝【树形期望dp】
    bzoj 3566: [SHOI2014]概率充电器【树形概率dp】
    bzoj 5277: [Usaco2018 Open]Out of Sorts【冒泡排序瞎搞】
    【04】在 PR 中关闭 issue
    【03】代码格式化+高亮
    【02】粘贴图像
    【01】在 Github 上编辑代码
    【02】GitHub 工具 Octotree
    【01】恶趣味玩转 GitHub commit 历史记录
    【07】Firebug监控网络情况
  • 原文地址:https://www.cnblogs.com/lengthuo/p/7224029.html
Copyright © 2011-2022 走看看