Laravel – POSTリクエストパラメーター

概要

Laravelでは、フォームからPOSTされたリクエストパラメーターもクエリーパラメーターと同じようにRequestオブジェクトを介して取得できる。

  • formからのメソッド(POST)にしたがって、actionで指定した送信先に、リクエストパラメーターがHTTPリクエストのボディーに含められて送信される
  • actionの送信先からコントローラーのアクションにルーティング
  • アクションでパラメーターを取得して利用

フォーム

例として、以下のフォームを含むビューでリクエストを受け付ける。

  • 入力項目=パラメーターはuser_namepost
  • メソッドはPOST
  • actionのターゲット取得にurl()ビューヘルパーを使っている
  • form開始タグの直後に@csrfディレクティブがあるが、これはCSRF(Cross Script Request Forgery)を防止するためのトークンを埋め込むためのもので、デフォルトではこれがないとフォーム送信時に”419 Page Expired”エラーになる

ルーティング

フォームからの送信が送られるactionのターゲットをコントローラーのアクションにルーティングする。この時はパラメーターについて特に関与しない。

以下は上記の例のルーティング例。

コントローラー

ルーティングされたコントローラーのアクションで、リクエストパラメーターを取得して利用する。

必須事項

クエリーパラメーターのコントローラーにおける必須事項を参照。

アクションにおけるパラメーターの取得

Requestオブジェクトのinput()メソッド

アクションの引数で指定したRequestオブジェクトのinput()メソッドで引数にパラメーター名を指定すると、これに対応したパラメーターの値が得られる。

$request->input('パラメーター名');

  • $requestはアクションの引数名で任意
  • パラメーター名はフォーム各要素のname属性で指定した名前

冒頭の例に対応したコントローラーの記述例は以下のとおり。

ビューはこれらの値を使って表示される。

request()関数

Requestオブジェクトのinput()メソッドではなく、request()関数の引数にパラメーター名を指定してもパラメーターの値を取得できる。

request('パラメーター名');

先の例のアクションの部分をこれで書き換えると以下の様になる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です