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'); // 追加 } }