Laravel urlのパラメータ クエリパラメータとパスパラメータ

クエリパラメータはURLの?以降につくパラメータである。

パスパラメータはURLの中に含まれるパラメータである。

取得

クエリパラメータ

GETやPOSTで送信したときのパラメータの取得はRequestクラスを使えば取得できる。

GETでつくパラメータは?以降にあるパラメータであり、これをクエリパラメータという。

use Illuminate\Http\Request;

public function edit(Request $request)
{
    // GET パラメータを取得
    $id = $request->input('id');

    // フォームデータを取得
    $name = $request->input('name');

    // その他のリクエスト情報を取得
    $method = $request->method();
    $path = $request->path();
    $headers = $request->headers();
    // など

    // 取得した情報を使用して処理を行う...
}

パスパラメータ

パスパラメータ(ルートパラメータ)はroute/web.phpなどに設定するルートURLの中にセットする{}で囲まれたパラメータである。これによりURLは変化する。

Route::get('domain/{id1}/{id2}/edit', 'SomeController@edit');

このパラメータを取得するにはRequestクラスではなく、actionメソッド(コントローラーの関数)で引数として取得することができる。

Requestクラスでは取得できないので注意。

仮にパラメータが複数あるときは、順番に引数を書けばいい。

またルート内の{}パスパラメータの名前はセットするときに使う?(使わなくてもいい)もので、

引数で取得するときの名前は変数名なので任意のものを使える。

use Illuminate\Http\Request;

public function edit(Request $request, $id1, $id2)
{
    // $id1 には最初のパスパラメータの値
    // $id2 には2番目のパスパラメータの値
    // これらの値を使用して処理を行う...
}