当前位置:  开发笔记 > 编程语言 > 正文

laravel 5.2:给自带的注册表单添加一个角色项,怎么保存?请看示例

使用的laravel5.2,用Zizacoentrust进行角色和权限管理,现在,在laravel自带注册表单添加了一个“角色”项,用户的角色在注册时由用户自己确定了,怎么保存这个角色呢?示例如下:注册表单:在laravel自带表单
使用的laravel5.2,用Zizaco/entrust进行角色和权限管理,现在,在laravel自带注册表单添加了一个“角色”项,用户的角色在注册时由用户自己确定了,怎么保存这个角色呢?示例如下:

注册表单: 在laravel自带表单基础上增加一个Role项。

{!! csrf_field() !!}

@if ($errors->has('name')) {{ $errors->first('name') }} @endif

@if ($errors->has('email')) {{ $errors->first('email') }} @endif

@if ($errors->has('password')) {{ $errors->first('password') }} @endif

@if ($errors->has('password_confirmation')) {{ $errors->first('password_confirmation') }} @endif

AuthController 自带的。

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

单独使用Zizaco/entrust时,我可以写一个RolesController,里面写一个attachRole()方法,可以手动分配角色。像这样:

public function attachRole()
{
    $user = User::where('name', '=', 'foo')->first();
    $user->roles()->attach(2);
    return "attachRole done";
}

现在,我想接收注册表单中传过来的role值,然后保存到Zizaco/entrust生成的role_user表中,而不是用上面的attachRole()方法手动赋予角色。是修改AuthController的create 方法么,还是其他做法?怎么做呢?

回复内容:

使用的laravel5.2,用Zizaco/entrust进行角色和权限管理,现在,在laravel自带注册表单添加了一个“角色”项,用户的角色在注册时由用户自己确定了,怎么保存这个角色呢?示例如下:

注册表单: 在laravel自带表单基础上增加一个Role项。

{!! csrf_field() !!}

@if ($errors->has('name')) {{ $errors->first('name') }} @endif

@if ($errors->has('email')) {{ $errors->first('email') }} @endif

@if ($errors->has('password')) {{ $errors->first('password') }} @endif

@if ($errors->has('password_confirmation')) {{ $errors->first('password_confirmation') }} @endif

AuthController 自带的。

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

单独使用Zizaco/entrust时,我可以写一个RolesController,里面写一个attachRole()方法,可以手动分配角色。像这样:

public function attachRole()
{
    $user = User::where('name', '=', 'foo')->first();
    $user->roles()->attach(2);
    return "attachRole done";
}

现在,我想接收注册表单中传过来的role值,然后保存到Zizaco/entrust生成的role_user表中,而不是用上面的attachRole()方法手动赋予角色。是修改AuthController的create 方法么,还是其他做法?怎么做呢?

把这两个方法合成一个不就可以了吗

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
    
    $user->roles()->attach($data['role']);
    
    return $user;
}
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有