laravel自訂分頁效果實例詳解

小云云
發布: 2023-03-19 20:58:02
原創
1361 人瀏覽過

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[&#39;prev_page_url&#39;] != null) {
        $prev_page = $page - 1;
        $res[&#39;prev_page_url&#39;] = Paginator::resolveCurrentPath() . "?page=" . $prev_page . "&limit=" . $limit;
      }
      if ($res[&#39;next_page_url&#39;] != null) {
        $next_page = $page + 1;
        $res[&#39;next_page_url&#39;] = 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使用Pagination外掛程式實作自訂分頁

以上是laravel自訂分頁效果實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!