質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

12013閲覧

Laravel 5.4 | POSTデータの取得について

youki_takemoto

総合スコア46

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/04/23 11:58

こんにちは。

Laravel 5.4の公式ドキュメントなどを確認しても分からないところがあったので、
今回、ご質問させていただきました。

公式のサンプルなどでは、POSTされたデータを受け取る場合、
コントローラーにインジェクトされたRequestクラスのインスタンスが持っているPOSTデータをViewやModelに渡すという流れになっています。

しかし、以下のような方法でもPOSTデータを受け取ることが出来ます。

PHP

1Request::get('userName'); 2Request::input('userName'); 3Input::get('userName');

質問は2点です。

Q1:

実態は同じっぽいので、
Requestクラス、Inputクラスのどちらか好きな方を自由に使っても大丈夫ですか?

Q2:

Viewからそれらを直接呼び出した場合、何か問題ありませんか?
(なぜか、Viewの中で直接呼び出しているコードを見かけなかったので。)

お力添えいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Q1.コントローラで送られてきたデータを使う場合は、Request $requestを使うと良いと思います。
Q2. view側でpostされたデータを使用する場合にはoldを使用すると便利です。

route

php

1Route::get('hoge' , 'HogeController@form'); 2Route::post('hoge/confirm', 'HogeController@confirm');

コントローラ側

php

1class HogeController extends Controller 2{ 3 public function form() 4 { 5 return view('hoge.form'); 6 } 7 8 public function confirm(Request $request) 9 { 10 $input = $request->all(); // $inputにpostのデータ入ってる 11 12 return view('hoge.confirm'); 13 } 14}

view側(hoge.form)

html

1<form method="post" action="hoge/confirm"> 2 名前:<input type="text" name="name" value="{{old('name','東京')}}" /> 3 住所:<input type="text" name="address" value="{{old('address','')}}" /> 4 <input type="submit" /> 5</form>

view側(hoge.confirm)

html

1<div> 2 <div>名前:<input type="text" name="name" value="{{old('name')}}" /></div> 3 <div>住所:<input type="text" name="address" value="{{old('address')}}" /></div> 4</div>

formのデータの入力チェックをしたい場合にはconfirmの引数のRequestを自分で作成したRequestクラスに書き換えれば対応したRequestクラスのruleが適用されてNGの場合には自動でindexに戻されるようになります。
Requestクラス内でエラーメッセージなどはまとめて管理できるのでコントローラ側はスッキリします。

php

1 public function confirm(Requests\MyRequest $request) 2 { 3 return view('hoge.confirm'); 4 }

↓リクエストクラスはこれで生成されます
php artisan make:request MyRequest

php

1class MyRequest extends Request 2{ 3 /** 4 * Determine if the user is authorized to make this request. 5 * 6 * @return bool 7 */ 8 public function authorize() 9 { 10 // return (\Auth::check()); 11 return false; 12 } 13 14 /** 15 * Get the validation rules that apply to the request. 16 * 17 * @return array 18 */ 19 public function rules() 20 { 21 return [ 22 'name' => 'required', // 名前必須 23 'address' => '', // 住所任意 24 ]; 25 } 26}

投稿2017/05/02 09:07

編集2017/05/02 09:13
shiroyuki

総合スコア169

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問