我正在使用Laravel 5.8,我有一个页面同时包含注册和登录表单(2个单独的表单发布到各自的端点/控制器(
我的注册表将发布到 Lavarel 身份验证提供的身份验证/注册控制器。
我想更改行为,以便在注册尝试失败时,它将添加一个额外的参数来重定向 url,以便我也知道将哪种表单应用于验证反馈。
我已经知道重定向到变量,这似乎是成功的请求
您需要重写 Auth/RegistrationController::register
方法,查看框架提供的默认代码并根据需要对其进行调整,如下所示:
public function register(Request $request) {
if ($this->validator($request->all())->fails()) {
return redirect('/foo?bar=1');
}
// Copy the default behaviour here
...
// or you can just
return parent::register($request);
}
您可以简单地覆盖父函数以在同一中创建新用户
身份验证/注册控制器创建新方法作为
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return AppUser
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
在这里,在"$data"变量中,您将获得通过表单传递的所有参数。
对于错误检查,您可以检查,
Laravel全局误差变量$errors是否为空
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return AppUser
*/
protected function create(array $data)
{
if(!empty($errors)){
if($data['form'] == 'form_1'){
$redirectTo = 'fitst_form'
}
else if($data['form'] == 'form_2'){
$redirectTo = 'second_form'
}
}
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
我希望这能解决你的问题
您必须在app/Http/Controllers/Auth/RegisterController中设置注册方法.php
受保护的功能寄存器(请求$request({
$errors = ['错误'=>'你错误列表]; if(!empty($errors(({ 返回 redirect((->route('/register-errorpage'(->withInput((->withErrors($errors(; }}