目次
はじめに
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」を呼び出す必要があります。
いかがでしょうか?
今日はこの辺でー