マルチリンガルなプログラマーになろう

習うより慣れよう、まずはコピペでOK

Laravelでルートパラメーターを使ってみる

コマンドでコントローラーを生成する

PHPコンテナの中に入る

docker compose exec app bash

コマンドでコントローラーを生成する

php artisan make:controller RouteParamTestController

コマンドが正常に終了すると、Helloコントローラーが生成されています。

中身は何もありませんので、これから追加していきます。

コントローラーを修正する

先ほど作ったコントローラーにアクションメソッドを追加します。

アクションメソッドの引数でルートパラメーターを受け取ります。

public function index($lang){
    echo($lang);
}

ルーティングの設定をする

コントローラーを使うためには、URLとコントローラーを紐づける必要があります。

routesフォルダにあるweb.phpに紐づけ情報を追加していきます。

Route::get('/route-param/{lang}', 'RouteParamTestController@index');

URLのパラメーターの部分を{ }で囲ってあげます。

変数名はアクションメソッドと同じにする必要があります。

ブラウザで確認する

http://localhost:8080/route-param/php

phpがルートパラメーターの部分になります。

phpという値が受け渡されて、画面に表示されていることが確認できます。

ルートパラメーターをjavaに変えてみました。

http://localhost:8080/route-param/java

複数のルートパラメーターを使用する

ルートパラメーターは同時にいくつでも使うことができます。

ルーティングを変更する

web.phpを以下のように変更します。

Route::get('/route-param/{lang1}/{lang2}', 'RouteParamTestController@index');

コントローラーを変更する

先ほど作ったアクションメソッドを以下に書き換えます。

    public function index($lang1, $lang2)
    {
        echo($lang1);
        echo("<br>");
        echo($lang2);
    }

ブラウザで確認する

http://localhost:8080/route-param/php/java

2つのルートパラメーターがコントローラーに受け渡されて、画面に表示されていることが確認できました。

任意項目のルートパラメーターを使ってみる

今までは必須項目でしたが、任意項目も設定できます。

ルーティングを変更する

web.phpを以下のように変更します。

Route::get('/route-param/{lang1}/{lang2}/{lang3?}', 'RouteParamTestController@index');

第3ルートパラメーターは末尾に?をつけています。

これが任意項目という意味になります。

コントローラーを変更する

アクションメソッドを以下のように修正します。

第3引数は任意項目のため、値が渡されない時があります。

ということで、デフォルト値を設定してあげます。

    public function index($lang1, $lang2, $lang3 = "なし")
    {
        echo($lang1);
        echo("<br>");
        echo($lang2);
        echo("<br>");
        echo($lang3);
    }

ブラウザで確認する

まずは任意項目である第3引数が設定されているパターンです

http://localhost:8080/route-param/php/java/vba

今まで通り、第3引数も画面に表示されました。

今度は任意項目である第3引数を省略すると、デフォルト値として設定した「なし」が表示されます。

http://localhost:8080/route-param/php

 

以上です。

お疲れ様でした。