laravel

时间:2017-07-12 13:49:24

标签: laravel registration

我正在尝试为laravel创建两个不同的注册页面 - 一个用于“学生”,另一个用于“导师”。

我可以通过两种方式来解决这个问题:

  1. 是要添加到localhost / register?user_type =“mentor”和localhost / register?user_type =“student”。然后根据user_type参数添加一个隐藏的输入,该输入将在注册时提交给laravel user_type。

  2. 添加完整的第二个注册页面localhost / register_mentor或localhost / register_student

  3. 所以,我使用了makeauth脚手架。但在这里我很困惑。

    1. 我不知道路线在哪里,例如:
    2. 在“RegistrationController”中我有

      protected function create(array $data) 
      

      所以我知道我可以编辑它并在数据库中添加user_type列。

      但我不知道这个“创造”在哪里被召唤?所以我不知道如何使用user_type调用一个新的注册页面。

      1. 因为我不知道它是如何被路由的 - 我不知道如何复制当前的register.blade.php并为第二个注册页面创建一个新的。它在register.blade.php中说注册过程发送到“{{route('register')}” - 但我不知道这是哪里。
      2. 希望我有意义,非常感谢任何帮助!

2 个答案:

答案 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());
 }