Laravel 5.6 でバリデーションを行う際、FormRequestを使って処理しようと考えています。
項目登録フォームは複数のページにありますが、バリデーション内容自体はほぼ同じです。
しかし、バリデーションエラーの際の戻り先にアンカー(#comment-formなど)をつけたいと思っているため、1つのFormRequestクラスにまとめられずにいます。
あるページでは「#comment-form」のアンカーが使われていて、別のページでは名前が違ったりアンカー自体使われていないページがあるなど、ページによって戻り先がやや異なります。
Validator::make() の形を使えば失敗時の遷移先は自由に変えられますが、rules や messages, attributes は共通なので使い回せたらいいと思っています。
FormRequest は$url->previous()
の内容を読んでいるので、これを書き換えできれば実現できそうにも見えますが方法がわかっておらず、ただしいやりかたなのかも自身がありません。
一時的に遷移先を変えたいだけであっても、もととなる FormRequest クラスを extends し、failedValidation() か getRedirectUrl() をオーバーライドした FormRequest クラスをフォームごとに用意する他ないのでしょうか?
Illuminate\Foundation\Http\FormRequest
php
1 protected function failedValidation(Validator $validator) 2 { 3 throw (new ValidationException($validator)) 4 ->errorBag($this->errorBag) 5 ->redirectTo($this->getRedirectUrl()); 6 } 7 8 protected function getRedirectUrl() 9 { 10 $url = $this->redirector->getUrlGenerator(); 11 12 if ($this->redirect) { 13 return $url->to($this->redirect); 14 } elseif ($this->redirectRoute) { 15 return $url->route($this->redirectRoute); 16 } elseif ($this->redirectAction) { 17 return $url->action($this->redirectAction); 18 } 19 20 return $url->previous(); 21 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。