搜索

菜单的编辑、删除功能

原创 2019-03-22 15:43:07 402
摘要:Menu.php菜单控制器代码:<?php namespace app\admins\controller; use app\admins\controller\Base; use Util\SysDb; class Menu extends Base { public function index()

Menu.php菜单控制器代码:

<?php
namespace app\admins\controller;

use app\admins\controller\Base;
use Util\SysDb;

class Menu extends Base
{
	public function index()
	{
		$pid = (int)input('get.pid');
		$where['pid'] = $pid;
		//加载菜单列表
		$data['lists'] = $this->db->table('admin_menu')->where($where)->order('ord asc')->lists();
		$data['pid'] = $pid;

		//子菜单
		if($pid>0){
			$parent = $this->db->table('admin_menu')->where(['mid'=>$pid])->item();
			$data['backid'] = $parent['pid'];
		}
		return $this->fetch('',$data);
	}

	public function add()
	{
		$pid = (int)input('get.pid');
		$mid = (int)input('get.mid');
		$data['parent_menu'] = $this->db->table('admin_menu')->where(['mid'=>$pid])->item();
		$data['menu'] = $this->db->table('admin_menu')->where(['mid'=>$mid])->item();
		return $this->fetch('',$data);
	}

	public function edit()
	{
		$pid = (int)input('get.pid');
		$mid = (int)input('get.mid');
		$data['parent_menu'] = $this->db->table('admin_menu')->where(['mid'=>$pid])->item();
		$data['menu'] = $this->db->table('admin_menu')->where(['mid'=>$mid])->item();
		return $this->fetch('',$data);
	}

	public function save()
	{
		$mid = (int)input('post.mid');
		$data['pid'] = (int)input('post.pid');
		$data['title'] = trim(input('post.title'));
		$data['controller'] = trim(input('post.controller'));
		$data['method'] = trim(input('post.method'));
		$daat['ord'] = (int)input('post.ord');
		$data['ishidden'] = (int)input('post.ishidden');
		$data['status'] = (int)input('post.status');

		if($data['title']==''){
			exit(json_encode(['code'=>1,'msg'=>'菜单名称不能为空']));
		}
		if($data['controller']==''){
			exit(json_encode(['code'=>1,'msg'=>'控制器不能为空']));
		}
		if($data['method']==''){
			exit(json_encode(['code'=>1,'msg'=>'控制器不能为空']));
		}


		$res = $this->db->table('admin_menu')->insert($data);


		
		if(!$res){
			exit(json_encode(['code'=>1,'msg'=>'保存失败']));
		}
		exit(json_encode(['code'=>0,'msg'=>'保存成功']));
	}

	public function doedit()
	{
		$data['mid'] = (int)input('post.mid');
		$data['pid'] = (int)input('post.pid') ? (int)input('post.pid') : 0;
		$data['title'] = trim(input('post.title'));
		$data['controller'] = trim(input('post.controller'));
		$data['method'] = trim(input('post.method'));
		$data['ord'] = (int)input('post.ord');
		$data['ishidden'] = (int)input('post.ishidden');
		$data['status'] = (int)input('post.status');

		if($data['title']==''){
			exit(json_encode(['code'=>1,'msg'=>'菜单名称不能为空']));
		}
		if($data['controller']==''){
			exit(json_encode(['code'=>1,'msg'=>'控制器不能为空']));
		}
		if($data['method']==''){
			exit(json_encode(['code'=>1,'msg'=>'控制器不能为空']));
		}



		$res = $this->db->table('admin_menu')->where(['mid'=>$data['mid']])->update($data);

		
		if(!$res){
			exit(json_encode(['code'=>1,'msg'=>'保存失败']));
		}
		exit(json_encode(['code'=>0,'msg'=>'保存成功']));
	}

	public function del()
	{
		$mid = (int)input('post.mid');
		$res = $this->db->table('admin_menu')->where(['mid'=>$mid])->delete();
		if(!$res){
			exit(json_encode(['code'=>1,'msg'=>'删除失败']));
		}
		exit(json_encode(['code'=>0,'msg'=>'删除成功']));
	}
}

菜单列表index.html模板代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css">
<script src="/static/plugins/layui/layui.js"></script>
<style>
.header span{
background: #009688;
margin-left: 30px;
padding: 10px;
color: #ffffff;
}
.header button{
float: right;
margin-top: -5px;
}
.header div{
border-bottom: 2px solid #009688;
margin-top: 8px;
}
</style>
</head>
<body style="padding: 10px;">
<input type="hidden" id="pid" value="{$pid}">
<div>
<span>菜单列表</span>
<button class="layui-btn layui-btn-sm" onclick="add()">添加</button>
<div></div>
</div>
<?php if($pid>0){?>
<button class="layui-btn layui-btn-sm layui-btn-primary" style="float: right;margin-top: 5px;margin-bottom: 5px;" onclick="backs({$backid})">返回上级菜单</button>
<?php }?>
<table>
<thead>
<tr>
<th>ID</th>
<th>排序</th>
<th>菜单名称</th>
<th>控制器</th>
<th>方法</th>
<th>是否隐藏</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name='$lists' id="vo"}
<tr>
<td>{$vo.mid}</td>
<td>{$vo.ord}</td>
<td>{$vo.title}</td>
<td>{$vo.controller}</td>
<td>{$vo.method}</td>
<td>{$vo.ishidden==1?'隐藏':'显示'}</td>
<td>{$vo.status==0?'正常':'<span style="color: red;">禁用</span>'}</td>
<td>
<button class="layui-btn layui-btn-xs" onclick="childs({$vo.mid})">子菜单</button>
<button class="layui-btn layui-btn-xs layui-btn-warm" onclick="edit({$vo.mid})">编辑</button>
<button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$vo.mid})">删除</button>
</td>
</tr>
{/volist}
</tbody>
</table>
</body>
<script>
layui.use('layer',function(){
var layer = layui.layer;
$ = layui.jquery;
});



//添加
function add(){
var pid = $('#pid').val();
layer.open({
type:2,
title:'添加菜单',
shade:0.3,
area:['480px','420px'],
content:'/index.php/admins/menu/add?pid='+pid
});
}

//编辑
function edit(mid){
var pid = $('#pid').val();
layer.open({
type:2,
title:'编辑菜单',
shade:0.3,
area:['480px','420px'],
content:'/index.php/admins/menu/edit?pid='+pid+'&mid='+mid
});
}

//删除
function del(mid)
{
layer.confirm('确认要删除吗?',{
icon:3,
btn:['确定','取消']
},function(){
$.post('/index.php/admins/menu/del',{'mid':mid},function(res){
if(res.code>0){
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){
window.location.reload();
},1000)
}
},'json');
});
}

//子菜单
function childs(mid){
window.location.href = '?pid='+mid;
}

//返回上级菜单
function backs(pid){
window.location.href = '?pid='+pid;
}
</script>
</html>

添加菜单add.html模板代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css">
<script src="/static/plugins/layui/layui.js"></script>
</head>
<body style="padding: 10px;">
<form>
<input type="hidden" name="pid" value="{$parent_menu.mid}">
<input type="hidden" name="mid" value="{$menu.mid}">
<?php if($parent_menu){?>
<div>
<label style="color: green;">上级菜单</label>
<div>
<input type="text" disabled="true" style="color: green;" value="{$parent_menu.title}">
</div>
</div>
<?php }?>

<div>
<label>菜单名称</label>
<div>
<input type="text" name="title">
</div>
</div>

<div>
<label>排序</label>
<div>
<input type="text" name="ord">
</div>
</div>

<div>
<label>控制器</label>
<div>
<input type="text" name="controller">
</div>
</div>

<div>
<label>方法</label>
<div>
<input type="text" name="method">
</div>
</div>

<div>
<label>状态</label>
<div>
<input type="checkbox" name="ishidden" lay-skin="primary" title="是否隐藏" value="1">
<input type="checkbox" name="status" lay-skin="primary" title="是否禁用" value="1">
</div>
</div>


</form>
<div>
<div>
<button onclick="save()">保存</button>
</div>
</div>
</body>
</html>
<script>
layui.use(['layer','form'],function(){
layer = layui.layer;
form = layui.form;
$ = layui.jquery;
});

function save(){
var title = $.trim($('input[name="title"]').val());
var controller = $.trim($('input[name="controller"]').val());
var method = $.trim($('input[name="method"]').val());

if(title==''){
layer.alert('请输入菜单名称',{'icon':2});
return;
}
if(controller==''){
layer.alert('请输入控制器',{'icon':2});
return;
}
if(method==''){
layer.alert('请输入方法',{'icon':2});
}

$.post('/index.php/admins/menu/save',$('form').serialize(),function(res){
if(res.code>0){
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){
parent.window.location.reload();
},1000)
}
},'json');
}
</script>

编辑菜单edit.html模板代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css">
<script src="/static/plugins/layui/layui.js"></script>
</head>
<body style="padding: 10px;">
<form>
<input type="hidden" name="pid" value="{$parent_menu.mid}">
<input type="hidden" name="mid" value="{$menu.mid}">
<?php if($parent_menu){?>
<div>
<label style="color: green;">上级菜单</label>
<div>
<input type="text" disabled="true" style="color: green;" value="{$parent_menu.title}">
</div>
</div>
<?php }?>

<div>
<label>菜单名称</label>
<div>
<input type="text" name="title" value="{$menu.title}">
</div>
</div>

<div>
<label>排序</label>
<div>
<input type="text" name="ord" value="{$menu.ord}">
</div>
</div>

<div>
<label>控制器</label>
<div>
<input type="text" name="controller" value="{$menu.controller}">
</div>
</div>

<div>
<label>方法</label>
<div>
<input type="text" name="method" value="{$menu.method}">
</div>
</div>

<div>
<label>状态</label>
<div>
<input type="checkbox" name="ishidden" lay-skin="primary" title="是否隐藏" value="1" {$menu.ishidden==1?'checked':''}>
<input type="checkbox" name="status" lay-skin="primary" title="是否禁用" value="1" {$menu.status==1?'checked':''}>
</div>
</div>


</form>
<div>
<div>
<button onclick="doedit()">保存</button>
</div>
</div>
</body>
</html>
<script>
layui.use(['layer','form'],function(){
layer = layui.layer;
form = layui.form;
$ = layui.jquery;
});

function doedit(){
var title = $.trim($('input[name="title"]').val());
var controller = $.trim($('input[name="controller"]').val());
var method = $.trim($('input[name="method"]').val());


if(title==''){
layer.alert('请输入菜单名称',{'icon':2});
return;
}
if(controller==''){
layer.alert('请输入控制器',{'icon':2});
return;
}
if(method==''){
layer.alert('请输入方法',{'icon':2});
}

$.post('/index.php/admins/menu/doedit',$('form').serialize(),function(res){
if(res.code>0){
layer.alert(res.msg,{'icon':2});
}else{
layer.msg(res.msg,{'icon':1});
setTimeout(function(){
parent.window.location.reload();
},1000)
}
},'json');
}
</script>


批改老师:查无此人批改时间:2019-03-22 17:29:39
老师总结:完成的不错。下次代码复制不完,可以截图上传图片。继续加油。

发布手记

热门词条