こんばんは、仕事が忙しくなってきたのと、三連休に個人的にキャンプに行ってきたので更新が遅れてしまったのるぼるのんです。
キャンプでは朝霧Jamに行ってきました、富士山を眺めながらゆったり音楽を楽しむ、充実した時間を過ごせました(問題もありましたが、、、笑)。そちらに関しても記事にできたらいいな、と思いつつ、ちょっと間が空いてしまったので今回は軽めの内容で記事更新です。
Laravel5.7のリリースノートでは、ペジネーションに関する更新
「Laravel5.7では、ペギネータのURL「ウィンドウ」の両サイドに、いくつの追加のリンクを表示するかを調整できます。デフォルトでは、メインのペジネータリンクの両サイドに3つのリンクが表示されます。この数を調整するには、onEachSide
メソッドを使用します。」
とあります。現在のページを表すページングボタンの横に表示される、前後のページへのリンクの個数調整ができる、という機能かと思われます。
これをLaravel5.6と比較してみます。まずはLaravel 5.6から。今回もテーブルなどにはproductsテーブルを使用します。テストデータはSeederを用いて準備。
Laravel 5.6でのペジネーション
まずはLaravel5.6でデフォルトのペジネーションを使用してみます。とりあえず全部の商品データを表示。
・ProductController.php
1 2 3 4 5 6 |
public function index() { $products = Product::all(); // 全データ取得 return view('products.index', compact('products')); } |
・index.blade.php
1 2 3 4 5 |
@foreach ($products as $product) <div class="card-body"> {{ $product->name }}:{{ $product->price }}円 </div> @endforeach |
乱数が商品名、数値が価格です。これを一ページ10件で呼び出します。
・ProductController.php
1 2 3 4 5 6 |
public function index() { $products = Product::select('*')->paginate(10); // all()の代わりにpaginateを使用。引数に呼び出す件数を指定します。 return view('products.index', compact('products')); } |
1ページ10件になりました。リンクを追加しましょう。
・index.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> @foreach ($products as $product) <div class="card-body"> {{ $product->name }}:{{ $product->price }}円 </div> @endforeach </div> </div> {{ $products->links() }} // 追記部分です </div> </div> |
ペジネーションにリンクが追加されました。paginate(1)にするとこんな感じ。
現在のページの左右に7このボタンがある状態ですね。
ではLaravel5.7で試してみます。
Laravel5.7でのペジネーション(追加機能、onEachSide)
とは言っても、Laravel 5.6の時とほぼ同じです。5.6でやったところまで進めます。
デフォルトのペジネーションはLaravel5.6、5.7に違いは内容です。
OnEachSideを試してみましょう。
1 |
{{ $products->onEachSide(2)->links() }} |
現在ページの両サイドがそれぞれ2ページずつになりました。。。
これ使えるのか???(^ω^;)
これなら自分でコーディングしたペジネーションブレードで制御した方が見た目も機能も向上すると思ってしまうのは私だけでしょうか、、、
ちなみに自分で書いたペジネーションbladeを呼び出すにはこんな感じ
1 |
{{ $products->links('hoge.huga') }} |
Laravelのデフォのページングって要素数が多いんだよなあ、、、そのせいでレスポンシブで崩れやすくなるし、、、
なんかやるせなかったので、そのうちリンクの機能を調整した物を書いてみたいと思います。
誰か偉い人これの使い道を教えてください。
はじめまして。
Laravel admin の導入で参考にさせていただいています。
なかなかLaravel自体の日本語情報が少なく、助かりました。
まとめて頂いてありがとうございます。
コメントありがとうございます!
内容のブラッシュアップがまだまだ足りないかと思いますが、これからもちょこちょこと更新していきますので
今後ともよろしくお願い致します!(^o^)