如何在 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');
我将 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');