文章目录
1、实现功能
(1)直接显示现有菜单数据(分页显示)
(2)每一行数据的编辑和删除
(3)搜索显示菜单数据
(4)菜单的添加
2、跳转实现
在view/index/index.html
中对应的部分添加a标签跳转地址:
<li class="layui-nav-item"><a href="/index.php/admin/menu/index">菜单管理</a></li>
之后所有后台相关显示菜单管理的html中都需要补上a标签跳转的地址
3、数据库字段
CREATE TABLE `cms_menu` (
`menu_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`menuname` varchar(40) NOT NULL DEFAULT '',
`parentid` smallint(6) NOT NULL DEFAULT '0',
`modulename` varchar(20) NOT NULL DEFAULT '',
`controller` varchar(20) NOT NULL DEFAULT '',
`method` varchar(20) NOT NULL DEFAULT '',
`data` varchar(100) NOT NULL DEFAULT '',
`listorder` smallint(6) unsigned NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1',
`type` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`menu_id`),
KEY `listorder` (`listorder`),
KEY `parentid` (`parentid`),
KEY `module` (`modulename`,`controller`,`method`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
4、显示全部菜单数据
(1)表格渲染
使用选项卡实现查看菜单和添加菜单的功能:
在index/index.html
中添加:
<div class="layui-body">
<!-- 内容主体区域 -->
<div class="layui-tab" lay-filter="menutab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="showmenu">查看菜单</li>
<li lay-id="addmenu">添加菜单</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<!--...搜索部分代码...-->
<table class="layui-hide" id="menulist" lay-filter="showmenu"></table><!--table的核心部分-->
</div>
<!--...添加菜单部分代码...-->
</div>
</div>
</div>
继续添加:
说明:该<script>的layui.use{}中共包含查看菜单部分、搜索显示、每行操作、添加菜单四个部分。
<script>
layui.use(['element','table','form'],function () {
/*----------------------------*/
/*------Tab---查看菜单部分------*/
/*----------------------------*/
var table = layui.table;
//方法渲染。field对应后端传回的json数据的key,可以多传。自动ajax get方法
table.render({
elem:'#menulist'
,url:'/index.php/admin/menu/index'//传递page和limit参数给后端
,cellMinWidth: 100 //全局定义常规单元格的最小宽度
,cols:[[
{
field:'menu_id',width:100, title:'ID',sort:true,align:'center'} //field即对应后端传回来的json数据的key值,sort即开始排序,titile为表格显示的标题
,{
field:'menuname',width:200, title:'菜单名',align:'center'}
,{
field:'modulename',width:200, title:'模块名',align:'center'}
,{
field:'type',width:200, title:'类型',align:'center',templet:'#type'}//templet模板渲染可以把数据库查到的数据进行修改(见下)
,{
field:'status',width:200, title:'状态',align:'center',templet:'#status'}
,{
field:'operation',width:200,title:'操作',align:'center',toolbar:'#barDemo'}//绑定按钮组
]]
,height:500
,page:true //开启分页
});
/*---------------------------
----搜索、每行操作、添加菜单-----
----------------------------*/
</script>
<script type="text/html" id="status"><!--返回的status为1和-1,使用templet使得对应显示“开启”和“关闭”-->
{
{# if(d.status == '1'){}}
开启
{
{# }else{ }}
关闭
{
{# } }}
</script>
<script type="text/html" id="type"><!--返回type为1和2,分别对应显示“后台菜单”和“前端栏目”-->
{
{# if(d.type == '1'){}}
后台菜单
{
{# }else{ }}
前端栏目
{
{# } }}
</script>
<!--id跟table cols里面的toolbar绑定,即每一行数据的编辑,具体实现见5、每一行数据的显示和编辑-->
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delete">删除</a>
</script>
(2)controller部分
在admin/Menu.php
中添加index()
方法:
public function index()
{
if(Request::isAjax())
{
$data = array();
$pagesize = Request::get('limit')?Request::get('limit'):10;//前端直接传过来的数据
$page = Request::get('page')?Request::get('page'):1;//前端直接传过来的数据
$menu = new MenuModel();//调用model的getMenusCount和getMenus方法
$res['count'] = $menu->getMenusCount($data);
$res['data'] = $menu->getMenus($data,$page,$pagesize);
$res['code'] = 0;
$res['msg'] = '';
echo json_encode($res);//传递json格式的$res回后端,注意$res需要包含的四个部分(默认为count、data、code和msg,这样回传后才可以自动渲染,如需要修改key值可参考官方文档)
ex