如何在 laravel 中设置自定义重定向 url?

How to set custom redirect url in register in laravel?

我将 RegistersUsers 中的寄存器方法覆盖 RegisterController 中的特征:

public function register(Request $request)
{
    $request->validate([
        'name' => 'required|string|max:255',
        'username' => 'required|string|max:255|unique:users',
        'password' => 'required|string|min:8|confirmed',
        'phone_number' => [
            'required',
            'min:11',
            'max:11',
            Rule::unique('users')
        ]
    ]);

    $user = User::create([
        'name' => $request['name'],
        'password' => Hash::make($request['password']),
        'username' => $request['username']
    ]);

    $this->guard()->login($user);

    $code = ActiveCode::generateCode($user);
    $request->session()->flash('phone', $request['phone_number']);
    $request->session()->flash('auth', ['user_id' => $user->id]);

    $user->notify(new ActiveCodeNotification($code, $request['phone_number']));

    return redirect(route('register.token'));

}

正如你在最后看到的那样,我返回了自定义路由,但在注册后,它将重定向到 /home

这是protected $redirectTo = '/';

为什么它不能重定向到 route('register.token')

更新

这是register.token路线:

Route::get('/register/phone', 'Auth\RegisterController@showTokenForm')
->name('register.token');

这是showTokenForm方法:

public function showTokenForm(Request $request)
{
    $request->session()->reflash();

    return view('auth.register-token');
}

替换

return redirect(route('register.token'));

来自

return redirect()->route('register.token');

来源: https://laravel.com/docs/8.x/redirects#redirecting-named-routes

guest 中间件正在应用于您的路由。使用 php artisan route:list 查看它说的附加了哪些中间件。 guest 中间件默认应用于 RegisterController 的所有动作,它在控制器的构造函数中设置。您将不得不进行调整:

$this->middleware('guest')->except('showTokenForm');