以下に、シンプルで簡単な方法といくつかのコード例を示します。
- ルートの作成: まず、ルートを作成します。ルートファイル(通常はroutes/web.php)に以下のようなコードを追加します。
Route::get('/posts', 'PostController@index')->name('posts.index');
- コントローラーの作成: 次に、PostControllerを作成します。以下のようなコードをコントローラーファイルに追加します。
use Illuminate\Http\Request;
use App\Post;
class PostController extends Controller
{
public function index(Request $request)
{
$query = Post::query();
// クエリ文字列の処理
$query->when($request->has('tag'), function ($q) use ($request) {
return $q->where('tag', $request->input('tag'));
});
$posts = $query->paginate(10);
return view('posts.index', compact('posts'));
}
}
- ビューの作成: 最後に、ビューファイルを作成します。resources/views/posts/index.blade.phpという名前のファイルを作成し、以下のようなコードを追加します。
@foreach ($posts as $post)
<!-- ブログ投稿の表示 -->
@endforeach
<!-- ページネーションリンクの表示 -->
{{ $posts->appends(request()->query())->links() }}
これで、クエリ文字列が保持されたままページネーションが行われます。ユーザーがタグを選択した場合、選択したタグがクエリ文字列に追加され、適切な結果が表示されます。
以上がLaravelでクエリ文字列を保持したままページネーションを行う方法のシンプルな例です。必要に応じてコードをカスタマイズしてください。