目次
はじめに
Laravelを使い始めましたが、まだまだ悩むことが多いです。
今回は、フォームリクエストでFailエラーが発生した後の処理を記載します。
環境
Laravel:5.5
PHP:7.2
フォームリクエストバリデーション
Laravelでフォームバリデーションを使うには、いくつか方法があります。
今回のフォームリクエストバリデーションは、より複雑なバリデーションを実現する時に使用します。
■ドキュメント
https://readouble.com/laravel/5.5/ja/validation.html#form-request-validation
Failエラー発生後の処理が設定したい
ドキュメントを読んでみたのですが、フォームリクエストでFailエラーが発生した後の処理を設定する方法が見つかりませんでした。
いろいろ調べてみたところ下記の方法で設定ができるようです。
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; // 以下を追記↓ use Illuminate\Contracts\Validation\Validator; use Illuminate\Http\Exceptions\HttpResponseException; class CustomRequest extends FormRequest { public function rules() { // 略 } //以下を追記↓ protected function failedValidation(Validator $validator) { $this->merge(['validated' => 'true']); // リダイレクト先 throw new HttpResponseException( redirect('hoge.com')->withInput($this->input)->withErrors($validator) ); } }
フォームリクエストにfailedValidationメソッドを記述してやれば設定できます。
その際に、「Illuminate\Contracts\Validation\Validator」と「Illuminate\Http\Exceptions\HttpResponseException」を呼び出す必要があります。
いかがでしょうか?
今日はこの辺でー