繁体   English   中英

Laravel 5.4创建用户时出错

[英]Laravel 5.4 Error when create user

嗨,我创建用户时遇到问题。 我收到此错误: SessionGuard.php第407行中的FatalThrowableError:类型错误:传递给Illuminate \\ Auth \\ SessionGuard :: login()的参数1必须实现Illuminate \\ Contracts \\ Auth \\ Authenticatable接口,给定为null,在/ home / mariusz中调用/Pulpit/www/szpital/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php,第35行

无论如何创建用户,但此错误是如此烦人,我不知道如何解决。 我使用laravel auth和我小的编辑注册控制器,因为我需要为用户添加角色,现在我的控制器看起来像那样。

 <?php namespace App\\Http\\Controllers\\Auth; use App\\User; use App\\Role; use App\\Http\\Controllers\\Controller; use Illuminate\\Support\\Facades\\Validator; use Illuminate\\Foundation\\Auth\\RegistersUsers; use Illuminate\\Support\\Facades\\Auth; class RegisterController extends Controller { /* |-------------------------------------------------------------------------- | Register Controller |-------------------------------------------------------------------------- | | This controller handles the registration of new users as well as their | validation and creation. By default this controller uses a trait to | provide this functionality without requiring any additional code. | */ use RegistersUsers; /** * Where to redirect users after registration. * * @var string */ protected $redirectTo = '/home'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \\Illuminate\\Contracts\\Validation\\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'lastname' => 'required|max:255', 'phonenumber' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|min:6|confirmed', ]); } /** * Create a new user instance after a valid registration. * * @param array $data * */ public function create(array $data) { $user = new User(); $user->name = $data['name']; $user->lastname = $data['lastname']; $user->phonenumber = $data['phonenumber']; $user->email = $data['email']; $user->password = bcrypt($data['password']); $user->save(); $user->roles()->attach(Role::where('name', 'User')->first()); Auth::login($user); } } 
我不知道我不应该编辑它。 我想解释一下何时出现此错误:1.我转到页面创建帐户。 2.我写姓名等。3.当我单击创建时,出现错误4.接下来,当我创建刷新页面用户时,登录并重定向到主页。

您无需添加Auth::login($user); 在Laravel 5.4中注册后自动登录。 更换:

public function create(array $data)
{
        $user = new User();
        $user->name = $data['name'];
        $user->lastname = $data['lastname'];
        $user->phonenumber = $data['phonenumber'];
        $user->email = $data['email'];
        $user->password = bcrypt($data['password']);
        $user->save();
        $user->roles()->attach(Role::where('name', 'User')->first());
        Auth::login($user);
}

与:

public function create(array $data)
{
        $user = new User();
        $user->name = $data['name'];
        $user->lastname = $data['lastname'];
        $user->phonenumber = $data['phonenumber'];
        $user->email = $data['email'];
        $user->password = bcrypt($data['password']);
        $user->save();
        $user->roles()->attach(Role::where('name', 'User')->first());

        return $user;
}

如果您的Laravel框架和身份验证控制器代码是最新的,那么RegisterUsers特性应为您解决。 这也应该解决您遇到的问题。

使用User :: create时

return User::create([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

默认返回$ user

解决结束返回$ user结束

$user = new User([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
    $user->save();

    return $user;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM