我正在尝试为laravel创建两个不同的注册页面 - 一个用于“学生”,另一个用于“导师”。
我可以通过两种方式来解决这个问题:
是要添加到localhost / register?user_type =“mentor”和localhost / register?user_type =“student”。然后根据user_type参数添加一个隐藏的输入,该输入将在注册时提交给laravel user_type。
添加完整的第二个注册页面localhost / register_mentor或localhost / register_student
所以,我使用了makeauth脚手架。但在这里我很困惑。
在“RegistrationController”中我有
protected function create(array $data)
所以我知道我可以编辑它并在数据库中添加user_type列。
但我不知道这个“创造”在哪里被召唤?所以我不知道如何使用user_type调用一个新的注册页面。
希望我有意义,非常感谢任何帮助!
答案 0 :(得分:1)
我认为你可以手动创建第二个控制器,为这个用户创建一个新模型,并为新注册创建一个新表单并手动创建,这将更容易。
但是如果你想看看Auth做了什么,你可以去vendor / laravel / framework / illuminate / auth,你已经使用了所有文件。
答案 1 :(得分:1)
在register()
中找到的vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php
方法中调用create方法。
您可以通过将它放在RegisterController中来覆盖找到的register()
方法。
您还可以访问$request
方法中的register()
实例,以便检查网址参数。
在RegisterController.php
添加注册方法:
public function register(Request $request)
{
$this->validator($request->all())->validate();
//Determine User type
if($request->user_type === 'mentor'){
event(new Registered($user = $this->create($request->all())));
}
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}