teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/01/10 00:53

投稿

mix-peach
mix-peach

スコア1910

answer CHANGED
@@ -8,4 +8,33 @@
8
8
  ```
9
9
 
10
10
  これでうまくいくならば、
11
- HogeRequestクラス内で、merge()をオーバーライドするか、オリジナルのmerge代理関数を作成するかで、そちらに処理をまとめておけば、HogeRequestを使うたびに```merge()```と```flash()```をセットで記述しなくて済むので、良さそうです。
11
+ HogeRequestクラス内で、merge()をオーバーライドするか、オリジナルのmerge代理関数を作成するかで、そちらに処理をまとめておけば、HogeRequestを使うたびに```merge()```と```flash()```をセットで記述しなくて済むので、良さそうです。
12
+
13
+ ---
14
+
15
+ コメントみましたので、追記です。
16
+
17
+ なるほど。newで作ったReqeustクラスではセッションが使えないようなら、
18
+ Controllerに渡されてきたRequestクラスの方で行うのではどうでしょうか?
19
+
20
+ ```
21
+ public function xxx(Request $request){
22
+
23
+ $request->merge(['hoge' => 'aaa']);
24
+ $request->flash();//こちらでも一応やっておく・・・
25
+
26
+ $data = $request->all();
27
+
28
+ $hogeRequest = new HogeRequest();
29
+ $hogeRequest->merge($data);
30
+ $hogeRequest->validate($hogeRequest->rules());
31
+
32
+ }
33
+ ```
34
+ こちらなら記載のエラーが出ることは無いはずです。
35
+
36
+ ところで、ちょっと話が変わりますが、
37
+ せっかく作った```HogeRequest```は、FormRequestとしては使わない(あるいは使えない)理由があるのでしょうか?
38
+
39
+ FormRequestとして使えば、一度受け取った```$request```を、新規で作った```HogeRequest```にマージする・・という作業を都度しなくて済みますし、自分で```validate()```関数を呼び出す必要もありません。
40
+ 普通のRequestクラスとも相違なく使えるので、Validation処理の共通化としてはこちらの方が良いような気がするのですが・・・?