LaravelでURLの一部を変数として受け取りたいです。例えば/users/5の5をコントローラ側で使いたいのですが、ルートの書き方がわかりません。
ルート定義で{id}のように波括弧で囲むと、その部分がパラメータになります。
// routes/web.php
Route::get('/users/{id}', [UserController::class, 'show']);
コントローラのメソッド引数で同じ名前を受け取れます。
public function show($id)
{
return "ユーザーID: " . $id;
}
省略可能にしたいときは{id?}とし、引数にデフォルト値を付けます。
Route::get('/users/{id?}', fn($id = null) => $id ?? 'ゲスト');数字だけに限定したいならwhereで制約をかけられます。
Route::get('/users/{id}', ...)->where('id', '[0-9]+');