Afterフックを追加
- exampleRequest
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class exampleRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
// ここにルールを記載
];
}
/**
* ⭐️ このメソッドを追記
* @param $validator
*/
public function withValidator($validator)
{
// バリデーション完了後
$validator->after(function ($validator) {
// 入力エラーがあった場合
if ($validator->errors()->any()) {
// 任意の処理を実装
}
});
}
}
メソッド内で入力値のデータを参照したい場合は$this->{name}
で取得できる
例えばemailフィールドの場合は $this->email
シンプルにリダイレクト先だけ変更したい場合
- フォームリクエストクラスに下記メソッドを追加すればOK
// URLで指定する場合
protected $redirect = '/example';
// ルート名を指定する場合
protected $redirectRoute = 'example.index';
Laravelの
フォームリクエストバリデーション
を使用すると、入力値が不正な場合に問答無用で前のページにリダイレクトされる。
このような時、例えば違うページに飛ばしたり、リダイレクト前にセッションなどにデータを保存したい場合は
Afterフック
を追加して対応する