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

    }
  • 相关阅读:
    《算法竞赛入门经典》 例题35 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)
    《算法竞赛入门经典》 例题35 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)
    《算法竞赛入门经典》 例题35 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)
    SVN分支
    SVN分支
    SVN 版本回退
    SVN 版本回退
    如何在excel中取消合并单元格后内容自动填充?
    如何在excel中取消合并单元格后内容自动填充?
    如何让自己像打王者荣耀一样发了疯、拼了命的学习?
  • 原文地址:https://www.cnblogs.com/lengthuo/p/7224029.html
Copyright © 2011-2022 走看看