1. 程式人生 > 實用技巧 >後臺給使用者授於角色

後臺給使用者授於角色

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>