Laravel のページングは非常にシンプルで使いやすいですが、あまり理想的ではないことが 1 つあります。
デフォルトのページングによって生成されるリンクは
users?page=1
このフォームはあまり適切ではありませんSEO に優しい (理論) 上記)
次に、
users/page/1
の形式でページング リンクが必要になる場合があります。それでは、どうすればよいでしょうか?
これを実装するには 2 つの方法があります。
最初の方法は、前のプロジェクトで使用した、直接正規化です。
ブレード内で直接正規化するための余地があるはずです。
{!! preg_replace("~(/?)\?page=~", '/page/', $users->render()) !!}
を置き換える際の最適化。アドバイスをいただければ幸いです。
もちろん、対応するルーティングもそれに応じて設定する必要がありますが、非常に簡単なので、拡張しません。
このメソッドの効果は得られますが、実際には laravel のスタイルがありません。
laravel のスタイルとは何ですか?コンポーザー、パッケージ
それでは 2 番目の方法を紹介しましょう
laravel-paginateroute
使用方法は非常に簡単です。以下は Readme からの抜粋です。
最初のステップ
// 要注意对应版本,可到https://packagist.org 方便查看 composer require spatie/laravel-paginateroute
2 番目のステップ
登録、
// config/app.php 'providers' => [ ... 'Spatie\PaginateRoute\PaginateRouteServiceProvider', ]; 'aliases' => [ ... 'PaginateRoute' => 'Spatie\PaginateRoute\PaginateRouteFacade', ];
3 番目のステップ
// app/Providers/RouteServiceProvider.php use PaginateRoute; // ... public function boot(Router $router) { PaginateRoute::registerMacros(); parent::boot($router); }
Use
ルーティングで
// app/Http/routes.php // Generates /users & /users/page/{page} Route::paginate('users', 'UsersController@index');
これにより2つのルートが生成されます
/users /users/page/{page}
その後、コントローラー内で、laravelのページングに従って通常のように書くことができます
ページ内でこのように使用されます。これは、simplePaginate
@if(PaginateRoute::hasPreviousPage()) <a href="{{ PaginateRoute::previousPageUrl() }}">Previous</a> @endif @if(PaginateRoute::hasNextPage($users)) <a href="{{ PaginateRoute::nextPageUrl($users) }}">Next</a> @endif
の対応する記述メソッドです。推奨: "laraveltutorial"
以上がLaravelページングSEOについての簡単な話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。