后台——用户授于角色页面

1.在用户列表页添加用户授于角色链接地址

<a title="授于角色" href="{{ url('admin/user/auth/'.$v->user_id) }}"></a>

2.创建用户授于角色路由

    //用户授于角色路由
    Route::get('user/auth/{id}', 'UserController@auth');

3.创建用户授于角色控制器方法

    public function auth($id)
    {
        //返回用户授于角色列页面
        return view('admin.user.auth');
    }

4.创建用户授于角色模板

  • 表单提交地址
    <form class="layui-form" action="" method="post">
  • 防止csrf
    {{ csrf_field() }}
  • 用户名称表单项
    <span class="x-red">*</span>用户名称
  • 角色名称表单项
    <span class="x-red">*</span>角色列表
  • 要提交的用户id表单项
    <input type="hidden" name="user_id" value="">
  • 要提交的用户名称user_name表单项
    <input type="text" name="user_name" value="">
  • 要提交的角色名称role_name表单项
    <input type="checkbox" name="role_name" value="">
  • 用户授于角色按钮
    <button>授权</button>

5.在用户授于角色控制器方法中,查询出用户数据

    public function auth($id)
    {
        //1.根据用户id查询出的所有数据
        $user = User::find($id);
        //返回用户授于角色列页面
        return view('admin.user.auth',compact('user'));
    }

6.在用户授于角色模板中显示用户名称

<input type="text" value="{{ $user->user_name }}" name="">

7.在用户授于角色控制器方法中,查询出所有角色列表

    public function auth($id)
    {
        //1.根据用户id查询出的所有数据
        $user = User::find($id);
       //2.从角色表中,查询出所有角色列表**
       $role = Role::get();
        //返回用户授于角色列页面
        return view('admin.user.auth',compact('user','role'));
    }

8.在用户授于角色模板中循环显示角色列表

     @foreach ($role as $v)
        <input type="checkbox"  name="" title="{{ $v->role_name }}" value="">
     @endforeach

9.在用户模型中,定义动态属性关联到角色模型

    //在用户模型user中,定义动态属性role,user表通过中间表user_role多对多关联到角色表role
    public function role()
    {
        //belongsToMany(被关联的模型,中间表名,当前模型在中间表中的主键, 被关联模型在中间表中的主键)
        return $this->belongsToMany('App\Model\Role','user_role','user_id','role_id');
    }

10.根据用户id,从用户角色中间表中查找出用户有哪些角色

    public function auth($id)
    {
        //1.根据用户id查询出的所有数据
        $user = User::find($id);
        //2.从角色表中,查询出所有角色列表
        $role = Role::get();
        //3.根据用户id,从用户角色中间表中查找出用户有哪些角色
        $user_role =$user->Role;
        dd($user_role);
        //返回用户授于角色列页面
        return view('admin.user.auth',compact('user','role'));
    }

11.遍历用户拥有的所有角色,获取拥有的角色id,放进arry()数组,传入页面

    public function auth($id)
    {
        //1.根据用户id查询出的所有数据
        $user = User::find($id);
        //2.从角色表中,查询出所有角色列表
        $roles = Role::get();
        //3.根据用户id,从用户角色中间表中查找出用户有哪些角色
        $user_roles =$user->Role;
        //dd($user_roles);
        //4.遍历用户拥有的所有角色,获取拥有的角色id,放进arry()数组
        $user_role =[];
        foreach ($user_roles as $v) {
            //将循环出来的角色id($V->id)放入数组的值中
            $user_role[] = $v->id;
        }
        //返回用户授于角色列页面
        return view('admin.user.auth',compact('user','roles','user_role'));
    }

12.在用户授于角色页面,默认选中用户拥有的角色名称

     <label for="L_email" class="layui-form-label">
        <span class="x-red">*</span>角色列表
     </label>
        <div class="layui-input-inline" style="width: 600px">
           @foreach ($roles as $v)
              //如果,循环出来的角色id在用户拥有的角色id数组中,则默认选中
              @if(in_array($v->id,$user_role))
                 <input type="checkbox" checked name="" title="{{ $v->role_name }}" value="" lay-skin="primary">
              //否则,循环出来的角色id不在用户拥有的角色id数组中,则不被选中    
              @else              
                 <input type="checkbox"  name="" title="{{ $v->role_name }}" value="" lay-skin="primary">
              @endif
           @endforeach
        </div>
posted @ 2020-12-07 19:41  shengge  阅读(117)  评论(0)    收藏  举报