【Laravel】Route::getでURLにパラメータを渡して受け取る
Route::getでは、アクセスするURLにパラメーターを設定して値を渡すことができます。
Route::get(‘/**/{パラメータ}’, $function(パラメータ))
以下のソースコードのように$year, $month, $titleをURLに入れることができます。またfunctionへの引数として値を渡しています。
$year = '2023'; $month = '09'; $title = 'hello'; Route::get('post/{year}/{month}/{title}/', function ($year,$month, $title) { $html = <<<EOF <!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title>{$title}</title> </head> <body> <h3>{$year}/{$month}</h3> <h1>{$title}</h1> </body> </html> EOF; return $html; });
この時のURLは http://127.0.0.1:8000/post/2023/09/hello となります。ブラウザで開くとご覧の通り。
アドレスにパラメーターを設定すると必須となり1つでも抜けてしまうと以下のようにNOT FOUNDエラーとなってしまいます。
これを任意パラメーターにする場合は、以下のように後ろに?を付けます。且つ引数には固定値を設定します。これを忘れるとエラーになるので注意しましょう。
ソースコードは以下の通り。
Route::get('post/{year}/{month}/{title?}/', function ($year,$month, $title='No Title') { $html = <<<EOF <!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title>{$title}</title> </head> <body> <h3>{$year}/{$month}</h3> <h1>{$title}</h1> </body> </html> EOF; return $html; });
{title}を抜いてブラウザで開くとご覧の通りとなります。
スポンサーリンク