Laravel 13系でGETパラメータをルーティング設定する方法
Laravelで「https://test.com/item/detail/123/」のようなURLでアクセスがあった場合に「123」部分をGETパラメータとして取得できるようルーティング設定を行いたい。以下に対応方法をメモ。
対応方法
ソースコード
// IDとして数値のみ許可して取得
Route::get('/item/detail/{id}', function ($id) {
return "id: {$id}";
})->where('id', '[0-9]+');
// 通常のGETパラメーターも併用する場合
Route::get('/item/detail/{id}', function (Request $request, $id) {
$tag = $request->query('tag'); //第2引数でデフォルト値(空の場合の値)を指定可
return "id: {$id} / tag: {$tag}";
})->where('id', '[0-9]+');
// カテゴリは英数字とハイフン、pageは数字のみ許可して取得(ページ指定が無い場合は1を指定)
Route::get('/archives/category/{category}/page/{page?}', function ($category, $page = 1) {
return "category: {$category} (page: {$page})";
})->where([
'category' => '[a-zA-Z0-9-]+',
'page' => '[0-9]+'
]);
// 通常のGETパラメーターも併用する場合
Route::get('/archives/category/{category}/page/{page?}', function (Request $request, $category, $page = 1) {
$tag = $request->query('tag'); //第2引数でデフォルト値(空の場合の値)を指定可
return "category: {$category} / page: {$page} / tag: {$tag}";
})->where([
'category' => '[a-zA-Z0-9-]+',
'page' => '[0-9]+'
]);
注意点
1ページ目等でページ指定が無い可能性がある場合はオプションパラメータとデフォルト値を指定する。
また、通常のGETパラメータも併用する場合「Request $request」は第1引数に指定する。
リファレンス
ルーティング
関連記事
-
-
Laravel 13系でエラーログをブラウザ上で表示・検索できる「log-viewer」の導入方法
先日Laravel 13系でエラーログ設定を行ったが、このログをブラウザ上で表示 ...
-
-
Laravel 13系でMailpitに対してテキスト・HTMLメールを送信する方法
Laravel 13系でMailpitに対してテキスト・HTMLメールを送信した ...
-
-
Laravel 13系で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
Laravel 13系でBootstrap 5系のCSS及びJavaScript ...
-
-
Laravelのディレクトリ構造・バージョン・DB接続情報確認
Laravelで作成されているシステムに携わることがあった。しかしながら当方La ...
-
-
Laravel 13系でGET / POSTパラメータを受け取って出力する方法
Laravel 13系でフォームから送信したGET / POSTパラメータを受け ...