首页 文章

Laravel 5.6注册用户角色

提问于
浏览
0

您好我正在关注本教程

https://www.5balloons.info/user-role-based-authentication-and-access-control-in-laravel/#comment-1889

我做了一切正常并添加了一些规则,一个自定义错误页面,只有管理员可以注册新用户 . 在/ admin视图中,我可以看到所有用户注册,管理员可以删除此用户 .

我还需要两个角色,供用户查看特定视图,我正在尝试在注册表单中定义角色,以便管理员可以定义谁可以看到特定页面 . 执行用户的一个角色和高级用户的一个角色 .

我能够做到这一点,但只能通过在database role_user表中添加关系

任何想法如何通过注册表格完成这项工作?无需输入数据库表

1 回答

  • 1

    我假设您正在使用Blade模板 . 使用以下命令为Role select添加下拉列表 .

    <select name="role">
    @foreach ( $roles as $role )
      <option value="${{role->id}}">{{ $role->name }}</option>
    @endforeach
    </select>
    

    您需要提供当前可用的角色,从您的角色模型(ha)到视图 . 这可以在渲染视图时在控制器中完成 .

    // Part of your controller
    $roles = Role::all();
    return view('your-view', [ 'roles' => $roles ]);
    

    这里的关键部分是 return view('your-view', [ 'roles' => $roles ]) . view 函数中的第二个参数是要传递给视图本身的数据 . 有关详细信息,请参阅the Blade docs .

    提交表单后,您可以在保存后将该角色“附加”到用户模型中 .

    $user = new User();
    // Assign user info here
    $user->save();
    $user->roles()->attach($request->role);
    
    • ->roles() 是我们要附加到的用户所属的模型 .

    • ->attach($request->role) - $request->role 是我们要附加到新创建的用户的角色的ID .

    您可以read more in the docs关于附加和分配与他人的各种关系 .

相关问题