Laravelでページネーション実装&カスタマイズする方法
Laravelのバージョンは8.20.1です。
1.シンプルなページネーション(ページ送り)を追加する
PreviousとNextボタンのみのシンプルなページネーション(ページ送り)を適応するには、まずコントローラにsimplePaginate()メソッドと追加します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
$items = Post::simplePaginate(10); // これでページネーション機能が追加される
return view('admin', ['items' => $items]);
}
}
そして次にテンプレートファイルに以下の様に記載します。
{{ $items->links() }}
たったこれだけでページネーションが完成です。
2.ページ番号がついたページネーションをつける
次はページ番号がついたページネーションです。
先ほどと同じ様にコントローラにメソッドを追加しますが今度は「paginate()」メソッドです。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
$items = Post::paginate(10); // これでページネーション機能が追加される
return view('admin', ['items' => $items]);
}
}
テンプレートファイルは先程と同じ。以下を記載します。
{{ $items->links() }}
これだけです。
3.ページネーションのデザインをカスタマイズする
ページネーションのデザインをカスタマイズするにはテンプレートファイルの
{{ $items->links('pagination.mypagination') }}
という風に「links()」メソッドの引数にブレードファイルを渡すだけです。
ページネーションのブレードファイルをイチから用意するのは大変なので予め用意されたものをカスタムするのが便利です。
予め用意されたファイルを使うにはまず以下のコマンドを打ちます。
php artisan vendor:publish --tag=laravel-pagination
上記コマンドで「resources/view」の中に「vendor」フォルダが作成され、更にその中には「pagination」というフォルダが作成されます。
paginationには以下の7つのファイルがテンプレートファイルが入っていて、これらはページネーションのデザインに関連するファイルです。
どれかをコピーして少々書き換えてテンプレートファイル内の「links()」メソッドの引数にファイルを入れてあげればOKですね。
ちなみに「links()」の引数に何もいれない場合はsimplePaginate()は「simple-tailwind.blade.php」のデザイン、paginate()の場合は「tailwind.blade.php」のデザインが採用されているようです。