クエリパラメータは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番目のパスパラメータの値
// これらの値を使用して処理を行う...
}