はじめに

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」を呼び出す必要があります。

 

いかがでしょうか?

今日はこの辺でー

 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください