laravel自訂分頁效果執行個體詳解

來源:互聯網
上載者:User
Laravel 的分頁很方便,其實擴充起來也挺容易的,下面就來做個樣本,擴充一下 paginate() 和 simplePaginate() 方法,來實現我們自訂分頁樣式,比如顯示 "上一頁" 和 "下一頁" ,而不是 "《" 和 "》" ,當然擴充的方法掌握了你就可以肆無忌憚的擴充一個你想要的分頁了,比如跳轉到某一頁,分頁顯示一共多少記錄,當前顯示的記錄範圍等等巴拉巴拉的。。。

5.1和5.2應該是同樣的方法,我這裡用的是5.2的版本。文檔告訴我們 Paginator 對應於查詢語句構造器和 Eloquent 的 simplePaginate 方法,而 LengthAwarePaginator 則等同於 paginate 方法。

本文主要為大家詳細介紹了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;  }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.