Laravel5から9へ移行したらページネーションが変わってしまった

投稿者: | 2022年10月16日

Laravel5で動作していたシステムをLaravel9にバージョンアップすることになったのですが、ページネーションの表示がおかしくなったので、その修正をしたときのメモです。

Laravel5のときはBlade上で下記のようなコードを記述をしていました。

{!! $users->appends(Request::all())->render() !!}

そして表示は次のようになっていました。

このコードをそのままLaravel9に持ってきましたら、次のように表示されてしまいます。

どうもページネーションで使われる標準のviewが変わってしまったようなので、ページネーション用のviewを指定するようにします。

まずページネーション用のviewを下記のコマンドで/resources/viewsに出力します。

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

/resources/views/vendor/pagination というディレクトリが作成され、いろいろなページネーションのviewが出力されています。

これらのviewを使用するには、次のようにblade上でページネーション用のviewを指定することになります。

{!! $users->appends(Request::all())->links('vendor.pagination.bootstrap-4') !!}

このようにすることで以前と同様な表示がされるようになります。

いちいちviewを指定するのが面倒な場合は、App\Providers\AppServiceProviderのbootメソッド内でデフォルトのviewを設定できます。

<?php

namespace App\Providers;

use Illuminate\Pagination\Paginator;  // 追加
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Paginator::defaultView('vendor.pagination.bootstrap-4');  // 追加
    }
}