【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}を抜いてブラウザで開くとご覧の通りとなります。
スポンサーリンク



