后台——用户授于角色页面
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>
浙公网安备 33010602011771号