ホーム > Laravel > LaravelのRegister(ユーザー登録)でバリデーションにひっかかったとき、指定の場所にリダイレクトさせる方法
Laravel

LaravelのRegister(ユーザー登録)でバリデーションにひっかかったとき、指定の場所にリダイレクトさせる方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

⇨ Laravel 記事の目次はこちら

Laravel の Register(ユーザー登録)でバリデーションにひっかかったとき、指定の場所にリダイレクトさせる方法についてまとめました。

Laravel 6

前提

かなりユースケースは少ないと思います。

Laravel の Auth を使った登録の仕組みだと、バリデーションに引っ掛かると

vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php に書かれているように、

    public function register(Request $request)
    {
        $this->validator($request->all())->validate();
        event(new Registered($user = $this->create($request->all())));
        $this->guard()->login($user);
        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }

の関数において、

->validate();

となっているため、自動リダイレクト機能が動作します。

結論

なので、この関数をオーバーライドしてあげます。

App/Http/Controllers/Auth/RegisterController.php

    public function register(Request $request)
    {
        $validation = $this->validator($request->all());
        if($validation->fails()) {
            //ここでリダイレクトを指定する
            return redirect()
                  //routeの部分をお好みの場所に変えて使えると思います
                ->route('register')
                ->withErrors($validation)
                ->withInput();
        }
        event(new Registered($user = $this->create($request->all())));
        $this->guard()->login($user);
        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }

リダイレクト処理がどこで行われているのか分かればあとは関数をオーバーライド(上書き)してあげれば良いだけです。

まとめ

以上です。

誰かの参考になればと思います。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する