一、修改角色
1.1 修改角色模版
修改角色模版: resource\views\admin\role\edit.blade.php
:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="Bookmark" href="/favicon.ico" >
<link rel="Shortcut Icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="/admin/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/css/style.css" />
<title>修改角色</title>
</head>
<body>
<article class="page-container">
<!-- 表单验证 -->
@include('admin.common.validate')
<form action="{{route('admin.role.update', $model)}}" method="post" class="form form-horizontal" id="form-member-add">
@csrf
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>角色:</label>
<div class="formControls col-xs-8 col-sm-9">
<!-- 闪存 -->
<input type="text" class="input-text" value="{{$model -> name}}" placeholder="角色名" id="username" name="name">
</div>
</div>
<div class="row cl">
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
<input class="btn btn-primary radius" type="submit" value=" 修改角色 ">
</div>
</div>
</form>
</article>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="/admin/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="/admin/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="/admin/static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="/admin/static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="/admin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
<script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/validate-methods.js"></script>
<script type="text/javascript" src="/admin/lib/jquery.validation/1.14.0/messages_zh.js"></script>
<script type="text/javascript">
// 采用ajax 进行提交
$(function() {
$("#form-member-add").validate({
// rules: {
// name: {
// required: true,
// }
// },
onkeyup: false,
focusCleanup: true,
success: "valid",
submitHandler: function(form) {
let url = $(form).attr('action');
// 表单序列化
let data = $(form).serialize();
console.log(data)
// put提交
$.ajax({
url,
data,
type: "PUT"
}).then((res) => {
console.log(res);
if (res.status == 20002) {
layer.msg(res.msg, {icon: 2, time: 2000});
}
else if (res.status == 1) {
layer.msg(res.msg, {icon: 1, time: 2000},() => {
location.href = "{{route('admin.role.index')}}";
})
}
})
}
});
});
</script>
</body>
</html>
1.2 修改角色控制器显示
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(int $id)
{
$model = Role::find($id);
return view('admin.role.edit', compact('model'));
}
1.3 修改角色控制器逻辑
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, int $id)
{
// 异常处理
try {
// 后台验证
$this -> validate($request, [
// unique:表名,唯一字段,排除行的值,以哪个字段来排除
'name' => 'required|unique:roles,name,'.$id.',id' // 排除id=3的那行
]);
}
catch (Exception $e) {
return ['status' => 20002, 'msg' => '验证不通过!'];
}
// 修改角色入库
Role::where('id', $id) -> update($request->only(['name']));
return ['status' => 1, 'msg' => '修改用户成功!'];
}
二、权限(结点)管理
2.1 创建权限资源路由
资源路由 权限管理:
Route::resource('node', 'NodeController');
2.2 创建资源控制器(关联模型)
创建资源控制器,并关联模型: php artisan make:controller Admin/NodeController -r -m Models/Node
可以看到这边都自动生成模型路由了,跟之前角色路由我们手动传id
的区别,就是这个命令你传id
都给你自动取出模型数据,这就是laravel
优雅之处了。
2.3 权限列表
1、控制器方法
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$data = Node::all();
return view('admin.node.index', compact('data'));
}
Node::all()
获取到节点的所有数据,并将数据给返回给admin.node.index
模版进行渲染。
2、模版展示 还是直接将user
文件夹复制黏贴改成node
文件夹:
修改index.blade.php
代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="/admin/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="/admin/static/h-ui.admin/css/style.css" />
<link rel="stylesheet" href="{{asset('css/app.css')}}">
<style>
a {
color: #fff;
}
</style>
<title>权限管理</title>
</head>
<body>
<nav class="breadcrumb"><i class="Hui-iconfont"></i> 首页 <span class="c-gray en">></span> 用户中心 <span class="c-gray en">></span> 节点管理 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont"></i></a></nav>
<!-- 消息提示 -->
@include('admin.common.msg')
<div class="page-container">
<form method="get" class="text-c"> 节点名称:
<input type="text" class="input-text" value="" style="width:250px" placeholder="输入节点名称" id="" name="kw" autocomplete="off" >
<button type="submit" class="btn btn-success radius" id="" name=""><i class="Hui-iconfont"></i> 搜节点</button>
</form>
<div class="cl pd-5 bg-1 bk-gray mt-20">
<span class="l">
<a href="{{route('admin.node.create')}}" class="btn btn-primary radius">
<i class="Hui-iconfont"></i> 添加节点
</a>
</span>
</div>
<div class="mt-20">
<table class="table table-border table-bordered table-hover table-bg table-sort">
<thead>
<tr class="text-c">
<th width="80">ID</th>
<th width="100">节点名称</th>
<th width="40">路由别名</th>
<th width="130">是否菜单</th>
<th width="130">加入时间</th>
<th width="100">操作</th>
</tr>
</thead>
<tbody>
@foreach($data as $item)
<tr class="text-c">
<td>{{$item -> id}}</td>
<td>{{$item -> name}}</td>
<td>{{$item -> route_name}}</td>
<td>{{$item -> is_menu}}</td>
<!-- <td>
<span class="label label-success radius">
<a href="#">权限</a>
</span>
</td> -->
<td>{{$item -> created_at}}</td>
<td class="td-manage">
<span class="label label-primary radius">
<a href="{{route('admin.node.edit', $item)}}">修改</a>
</span>
<span class="label label-danger radius">
<a href="{{route('admin.node.destroy', $item)}}">删除</a>
</span>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="/admin/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="/admin/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="/admin/static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="/admin/static/h-ui.admin/js/H-ui.admin.js"></script>
<!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="/admin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="/admin/lib/datatables/1.10.15/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="/admin/lib/laypage/1.2/laypage.js"></script>
</body>
</html>
3、增加菜单项
效果:
可以看到效果已经出来了,但是还没有数据,我们将在下节进行数据的展示效果。
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。