非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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

 

スポンサーリンク

 - Laravel