laravel中角色与权限的管理
1、页面
代码:
<div class="contain" style="width: 84%;" id="contain">
<h2 style="padding:0;margin:0;font-size:28px;letter-spacing:4px;">角色列表</h2>
<table class="table table-hover table-condensed table-responsive" id="table">
<thead>
<tr>
<th>id</th>
<th>角色名</th>
<th style="padding-left: 30px;">操作</th>
</tr>
</thead>
<tbody>
@foreach ($roles as $role)
<tr>
<td>{{ $role->id }}</td>
<td>{{ $role->name }}</td>
<td>
<a style="font-size: 15px;" type="submit" href="{{ url("role/".$role->id."/edit") }}" class="btn">权限</a>
<a style="font-size: 15px;" type="submit" class="btn" onclick="delPri({{ $role->id }})">删除</a>
</td>
</tr>
@endforeach
</tbody>
<div style="float:right;margin-top:-30px;margin-right:100px;height:70px;" id="pagination">
{{ $roles->render() }}
<div style="float:right;letter-spacing: 2px;margin-left:20px;" class="pagi__count"> 共<b>{{ $count }}</b>条数据</div>
</div>
</table>
</div>
2、权限按钮的控制器
public function edit($role_id)
{
$role = Role::find($role_id);
$my_privileges = Role::find($role_id)->privileges;
$privileges = Privilege::all();
return view("role.edit", compact("role", "my_privileges", "privileges"));
}
3、权限页面
代码:
<form action="{{ url("role/".$role->id) }}" method="post">
{{ csrf_field() }}
{{ method_field("put") }}
@foreach ($privileges as $privilege)
<div class="form-group">
<label for=""><input type="checkbox" name="privileges[]" value="{{ $privilege->id }}"
@if ($my_privileges->contains($privilege)) checked @endif> {{ $privilege->name }}</label>
</div> // 判断若有这个权限就选中
@endforeach
<button type="submit" class="btn btn-primary">提交</button>
</form>
4、提交后的修改实现
public function update(Request $request, $role_id)
{
$role = Role::find($role_id);
$request = $request->except("_token", "put");
$my_privileges = Role::find($role_id)->privileges;
$privileges = Privilege::findMany($request["privileges"]);
// 要增加的
$addPrivileges = $privileges->diff($my_privileges);
foreach ($addPrivileges as $addPrivilege) {
$role->grantPrivileges($addPrivilege); // 模型中的方法
}
// 要删除的
$delePrivileges = $my_privileges->diff($privileges);
foreach ($delePrivileges as $delePrivilege) {
$role->deletePrivileges($delePrivilege); // 模型中的方法
}
return back();
}5、模型中的实现
// 给角色赋予权限
public function grantPrivileges($privilege)
{
return $this->privileges()->save($privilege);
}
// 取消角色赋予的权限
public function deletePrivileges($privilege)
{
return $this->privileges()->detach($privilege);
}声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: laravel entrust 权限管理
- 下一篇: 允许交换两个数(一对)的位置 求最大子数组和
