国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - Laravel手動分頁實現方法詳解

Laravel手動分頁實現方法詳解

2021-03-09 16:07hxx_yang PHP教程

這篇文章主要介紹了Laravel手動分頁實現方法,結合實例形式較為詳細的分析了Laravel手動分頁相關源碼修改與方法調用技巧,需要的朋友可以參考下

本文實例講述了Laravel手動分頁實現方法。分享給大家供大家參考,具體如下:

這里的演示實例基于Laravel的5.2版本

在開發過程中有這么一種情況,你請求Java api獲取信息,由于信息較多,需要分頁顯示。Laravel官方提供了一個簡單的方式paginate($perPage),但是這種方法只適用model、查詢構建器。

今天說下 給定一個數組如何實現 和paginate方法一樣的效果。

查看paginate方法源碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
    $query = $this->toBase();
    $total = $query->getCountForPagination();
    $this->forPage(
      $page = $page ?: Paginator::resolveCurrentPage($pageName),
      $perPage = $perPage ?: $this->model->getPerPage()
    );
    return new LengthAwarePaginator($this->get($columns), $total, $perPage, $page, [
      'path' => Paginator::resolveCurrentPath(),
      'pageName' => $pageName,
    ]);
}

從上面就可以看出,分頁的關鍵就在于LengthAwarePaginator。

LengthAwarePaginator的構造方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
public function __construct($items, $total, $perPage, $currentPage = null, array $options = [])
{
    foreach ($options as $key => $value) {
      $this->{$key} = $value;
    }
    $this->total = $total;
    $this->perPage = $perPage;
    $this->lastPage = (int) ceil($total / $perPage);
    $this->path = $this->path != '/' ? rtrim($this->path, '/') : $this->path;
    $this->currentPage = $this->setCurrentPage($currentPage, $this->lastPage);
    $this->items = $items instanceof Collection ? $items : Collection::make($items);
}

其實已經很明白了,假如要分頁的數組為

?
1
2
3
4
5
6
7
8
9
[
  ['username'=>'zhangsan', 'age'=>26],
  ['username'=>'lisi', 'age'=>23],
  ['username'=>'wangwu', 'age'=>62],
  ['username'=>'zhaoliu', 'age'=>46],
  ['username'=>'wangmazi', 'age'=>25],
  ['username'=>'lanzi', 'age'=>24],
  ['username'=>'pangzi', 'age'=>21],
]

共7條數據,每頁顯示3條,共3頁

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
# 僅做演示 #
function userList(Request $request) {
  $users = [
    ['username'=>'zhangsan', 'age'=>26],
    ['username'=>'lisi', 'age'=>23],
    ['username'=>'wangwu', 'age'=>62],
    ['username'=>'zhaoliu', 'age'=>46],
    ['username'=>'wangmazi', 'age'=>25],
    ['username'=>'lanzi', 'age'=>24],
    ['username'=>'pangzi', 'age'=>21]
  ];
  $perPage = 3;
  if ($request->has('page')) {
      $current_page = $request->input('page');
      $current_page = $current_page <= 0 ? 1 :$current_page;
  } else {
      $current_page = 1;
  }
  $item = array_slice($users, ($current_page-1)*$perPage, $perPage); //注釋1
  $total = count($users);
  $paginator =new LengthAwarePaginator($item, $total, $perPage, $currentPage, [
      'path' => Paginator::resolveCurrentPath(), //注釋2
      'pageName' => 'page',
  ]);
  $userlist = $paginator->toArray()['data'];
  return view('userlist', compact('userlist', 'paginator'));
}

上面的代碼中的重點是$item,如果不做注釋1處理,得出的是所有7條數據。

注釋2處就是設定個要分頁的url地址。也可以手動通過 $paginator ->setPath('路徑') 設置。

頁面中的分頁連接也是同樣的調用方式:

?
1
{{ $paginator->render() }}

好了,基本就是這樣,有紕漏的地方歡迎指正!

看看最終效果:

Laravel手動分頁實現方法詳解

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产综合精品一区二区三区 | 在线观看亚洲 | 国产美女精品视频免费观看 | 日本亚洲欧美 | 久久99精品视频 | 中文字幕二区 | 欧美另类视频 | 天天躁人人躁人人躁狂躁 | 色先锋影院 | 久久久久久久久国产成人免费 | 国产高清一区二区三区 | 国产一区中文字幕 | 成人在线小视频 | 美国理论 | 成人一区二区三区在线观看 | 欧美视频一区二区 | 国产成人久久精品一区二区三区 | 九九热九九 | 九九热在线免费视频 | 婷婷色av| 在线视频自拍 | 成人免费小视频 | 国产高清一级片 | 亚洲国产精品一区二区第一页 | 天天干夜夜操 | 国产99久久精品一区二区永久免费 | 亚洲精品久久久一区二区三区 | 欧美精品成人一区二区在线 | 精品国产一区二区三区在线观看 | 欧美日在线 | 免费看国产视频 | 日韩精品www | 亚洲成人免费在线 | 欧美在线综合 | 伊人6 | av网站在线播放 | 欧美a在线 | 91亚洲成人 | 特级西西人体4444xxxx | 久久久久99精品国产片 | 99精品热视频 |