Laravel:将请求转换为另一个

时间:2018-08-27 09:43:49

标签: laravel laravel-5 request

我想在用户注册后立即登录。这是我的UserController的代码(有效):

<?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将我的Register请求转换为Login请求?

2 个答案:

答案 0 :(得分:0)

您只是在注册后尝试登录用户,因此请使用Auth::login($user)

class UserController extends Controller
{
    public function register(Register $request)
    {
        $user =  User::create($request->all());

       \Auth::login($user);

    }

}

答案 1 :(得分:0)

用户注册后,您就可以使用此代码段尝试登录

if(Auth :: attempt(['email'=> request('email'),'password'=> request('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');
   }