質問: new HogeRequest(); $hogeRequest->merge($data); $hogeRequest->validate($hogeRequest->rules()); ``` ``` {{ old('hoge') }} ``` ### 試したこと そもそも、Validator::make()で処理すべきかとも思うのですが、 Validate処理を共通化したく、試行錯誤のうえ上記のようになりました。 わかりずらいかと思いますが、何卒よろしくお願いいたします。
回答: 今の記述だけでは、oldの参照先(フラッシュデータ)に、hogeの値が含まれないからかと思います。 明示的にフラッシュデータを再保存してみてはどうでしょう? ``` $hogeRequest->merge($data); $hogeRequest->flash(); ``` これでうまくいくならば、 HogeRequestクラス内で、merge()をオーバーライドするか、オリジナルのmerge代理関数を作成するかで、そちらに処理をまとめておけば、HogeRequestを使うたびに`merge()`と`flash()`をセットで記述しなくて済むので、良さそうです。 コメントみましたので、追記です。 なるほど。newで作ったReqeustクラスではセッションが使えないようなら、 Controllerに渡されてきたRequestクラスの方で行うのではどうでしょうか? ``` public function xxx(Request $request){ $request->merge(['hoge' => 'aaa']); $request->flash();//こちらでも一応やっておく・・・ $data = $request->all(); $hogeRequest = new HogeRequest(); $hogeRequest->merge($data); $hogeRequest->validate($hogeRequest->rules()); } ``` こちらなら記載のエラーが出ることは無いはずです。 ところで、ちょっと話が変わりますが、 せっかく作った`HogeRequest`は、FormRequestとしては使わない(あるいは使えない)理由があるのでしょうか? FormRequestとして使えば、一度受け取った`$request`を、新規で作った`HogeRequest`にマージする・・という作業を都度しなくて済みますし、自分で`validate()`関数を呼び出す必要もありません。 普通のRequestクラスとも相違なく使えるので、Validation処理の共通化としてはこちらの方が良いような気がするのですが・・・?