読者です 読者をやめる 読者になる 読者になる

【メモ】 Laravel 5.1 において FormRequest でエラーが発生した際の戻し先を変更する

表題の件、最近ちょっとハマったのでメモします。

確認画面を挟むような日本式フォームの場合、確認画面から完了画面に遷移する場合に何らか値をいじられてもエラーを返さないといけないのですが、バリデーションで FormRequest を利用している場合、エラー発生の際に直前のページ(この場合は確認画面)へ戻ろうとしてしまい困りました。

この場合、入力画面に戻すのが筋なので、その方法が載っていないかとドキュメントをウンウン唸りながらを読んでみてもいまいちわからず

Validation - Laravel - The PHP Framework For Web Artisans

結局ソースを読んで以下を見つけました。

framework/FormRequest.php at 5.1 · laravel/framework · GitHub

redirect, redirectRoute, redirectAction のどれかに戻り先を書いてあげればよさそうです。

<?php
namespace App\Http\Requests;

use App\Http\Requests\Request;

class TestRequest extends Request
{
    protected $redirectRoute = 'route';

    public function authorize()
    {
        
    }

    public function rules()
    {
        return [];
    }
}

このように指定したら動きました。