後臺給使用者授於角色
阿新 • • 發佈:2020-12-07
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>