LaravelのPagination Elements数を調整する方法

Laravelでページング表示をしている場合、ある程度は自動的に表示できるようにはなっているのですが、表示件数が多すぎてデザイン的に狭めたい場合の対処法です。

これが

こうなります

Pagination Elements の個数を変更

まずはページネーションのレイアウトを変更できるようにテンプレートをリポジトリ配下に持ってきます

php artisan vendor:publish --tag=laravel-pagination

表示されるテンプレートを見ると自動生成される $elements の中身が多い故に表示件数が多くなるのがわかりました。

                    {{-- Pagination Elements --}}
                    @foreach ($elements as $element)

解決方法

ページネーションを表示している箇所に onEachSide(0) を指定することで表示数が変更されました。

(デフォルトは onEachSide(3))

    {{ $messages->onEachSide(0)->links() }}

この指定でカレントページの前後0個目のリンクが表示するようになります。

ちなみに、1ページ目ではこちらの表示になります。

デフォルト10ページ分出すのも出し過ぎ感はあるのでこれでちょうど良いのかもしれません。

公式のドキュメントにも書いてありました

ページネーションリンクウィンドウの調整

ページネータにページネーション リンクが表示されると、現在のページ番号に加えて、現在のページの前後 3 ページのリンクも表示されます。 onEachSide メソッドを使用すると、ページネータによって生成されたリンクの中央のスライディング ウィンドウ内の現在のページの両側に表示される追加リンクの数を制御できます。

(日本語訳)

https://laravel.com/docs/10.x/pagination#adjusting-the-pagination-link-window

以上、お疲れ様でした。