代码之家  ›  专栏  ›  技术社区  ›  Orange Lux

laravel:将请求转换为另一个请求

  •  1
  • Orange Lux  · 技术社区  · 6 年前

    我想我的用户一注册就记录下来。这是我的用户控制器代码(可以工作):

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Http\Requests\Login;
    use App\Http\Requests\Register;
    use App\User;
    
    class UserController extends Controller
    {
        public function register(Register $request)
        {
            User::create($request->all());
    
            $loginRequest             = new Login();
            $loginRequest['email']    = $request->get('email');
            $loginRequest['password'] = $request->get('password');
    
            return $this->login($loginRequest);
        }
    
        public function login(Login $request)
        {
            return 'ok';
        }
    }
    

    我觉得我在用我的 $loginRequest . 有没有更简洁的方法来做同样的事?aka将我的注册请求转换为登录请求?

    2 回复  |  直到 6 年前
        1
  •  0
  •   FULL STACK DEV    6 年前

    您只需在注册后尝试将用户登录到他的帐户,因此请使用 Auth::login($user)

    class UserController extends Controller
    {
        public function register(Register $request)
        {
            $user =  User::create($request->all());
    
           \Auth::login($user);
    
        }
    
    }
    
        2
  •  0
  •   Bikash    6 年前

    一旦用户注册,就可以使用这段代码尝试登录

    if(auth::尝试(['email'=>请求('email'),'password'=>请求('password')){

    return redirect::route('dashboard'); }

    所以代码应该是

    User::create($request->all());
    
            $loginRequest             = new Login();
            $loginRequest['email']    = $request->get('email');
            $loginRequest['password'] = $request->get('password');
    
    
    
        if (Auth::attempt(['email' => $request->get('email'), 
        'password' => $request->get('password')])) {
        return Redirect::route('dashboard');
       }