在注册Zizaco / entrust上添加默认角色

时间:2019-07-14 08:59:47

标签: php laravel

很抱歉,在Zizaco/entrust上遇到新用户注册时,他没有任何作用的问题, 我需要成为客户Role

RegisterController

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);

     $role = Role::where('name','client')->firstOrFail();
     $user->attachRole($role);
     return $user;
 }

2 个答案:

答案 0 :(得分:0)

显示的代码乍一看似乎正确。我假设您已遵循github izaco / entrust的配置说明,对吗?

如果没有,我建议您转到我们告诉您如何配置和使用它的页面。他们在那里解释得比我在这里能做的要好得多。

github izaco/entrust

我也在stackoverflow上找到了一个与您类似的问题

stackoverflow similar question

我希望这可以帮助您找到所需的答案。 亲切的问候。

已更新 我回过头来检查您的代码,但并没有因为您返回了代码,而是直接在变量中对其进行了测试,因此这对我有用。抱歉,我以前没有注意到。

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

更改为

$user = User::create([
    'name' => $data['name'],
    'email' => $data['email'],
    'password' => Hash::make($data['password']),
]);

实际上,我在找到并附加为链接的相关问题中就是这样。

无论如何,我很高兴您为自己解决了这个问题。亲切的问候。

答案 1 :(得分:0)

我用了它,效果很好:

protected function create(array $data)
{
   $userModel = new User();
        $userModel->name = $data['name'];
        $userModel->email = $data['email'];
        $userModel->password = Hash::make($data['password']);
        $userModel->save();

        $role = Role::where('name', 'client')->first();
        $userModel->roles()->attach($role->id);
        return $userModel;
}