Request処理について

2018/10/12

今回はフォーム画面で送ったデータをどのように処理をするのかについてエントリーします。

通常、フォーム画面でPOST送信したデータはコントローラで受け取ります。

Laravel5.2ではRequestクラスを使ってデータを取得します。

Laravelでのリクエスト処理を理解するためにサンプルで作成してみます。

 

サンプルプログラムの仕様

【1】フォーム画面でPOST送信

【2】コントローラで処理

   - データを受け取る

   - ビューにデータを渡す

【3】ビューで表示

 

【1】フォーム画面でPOST送信

<h1>評価</h1>
<form action="form_post" method="post" accept-charset="utf-8">
  <!-- トークンの追加 -->
  {!! csrf_field() !!}

  <label>
  <input type="radio" name="hyouka" value="good" checked="checked"> 良い
  </label>
  <label>
  <input type="radio" name="hyouka" value="bad"> 悪い
  </label>

  コメント<br>
  <input type="text" name="comment" value="">
  <input type="submit" value="送信" >
</form>

 

【解説】
フォーム画面にはCSRFトークンを埋め込まないと送信できません。
CSRF対策について

 

【2】コントローラで処理

public function form_post(Request $request) {   …(1)

  $post_data = $request::all();   ...(2)

  return view('hyouka.result',compact('post_data'));   …(3)
  }

 

【解説】
今回、学習する箇所です。
(1)form_post関数の引数に「Request $request」を追加します。
(2)POST送信されたデータをすべて配列($post_data)にいれます。
 - その他のやり方 -
  $hyouka = $request->input('hyouka');
  $comment = $request->input('comment');
(3)compact関数でHyouka/result.blade.phpにPOST送信されたデータを配列の状態で渡します。
withメソッドでも可能です。

 

【3】ビューで表示

ビュー側で配列を展開します。

<h1>評価結果</h1>
<p class="text-center">
  評価は{{$post_date['hyouka']}} <br>
  コメント:{{$post_date['comment']}}
</p>

最後にルーティングの設定して終わりです。

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識