勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

Laravel 13系でGETパラメータをルーティング設定する方法

  PHP Laravel

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引数に指定する。

 

リファレンス

ルーティング

https://laravel-jp.toolboxforweb.xyz/docs/routing

 - PHP Laravel

  関連記事

Laravel 13系でエラーログをブラウザ上で表示・検索できる「log-viewer」の導入方法
Laravel 13系でエラーログをブラウザ上で表示・検索できる「log-viewer」の導入方法

先日Laravel 13系でエラーログ設定を行ったが、このログをブラウザ上で表示 ...

Laravel 13系でMailpitに対してテキスト・HTMLメールを送信する方法
Laravel 13系でMailpitに対してテキスト・HTMLメールを送信する方法

Laravel 13系でMailpitに対してテキスト・HTMLメールを送信した ...

Laravel 13系で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
Laravel 13系で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法

Laravel 13系でBootstrap 5系のCSS及びJavaScript ...

Laravelのディレクトリ構造・バージョン・DB接続情報確認
Laravelのディレクトリ構造・バージョン・DB接続情報確認

Laravelで作成されているシステムに携わることがあった。しかしながら当方La ...

Laravel 13系でGET / POSTパラメータを受け取って出力する方法
Laravel 13系でGET / POSTパラメータを受け取って出力する方法

Laravel 13系でフォームから送信したGET / POSTパラメータを受け ...