laravel前后端交互修改角色及权限列表展示

19 篇文章 0 订阅

一、修改角色

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="&nbsp;&nbsp;修改角色&nbsp;&nbsp;">
			</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">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 用户中心 <span class="c-gray en">&gt;</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">&#xe68f;</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">&#xe665;</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">&#xe600;</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的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值