ThinkPHP5.1后台搭建项目3---菜单管理(layui数据表格、表单赋初值)

本文详细介绍了如何使用ThinkPHP5.1框架搭建后台菜单管理功能,包括显示所有菜单数据、分页、编辑删除操作、搜索功能以及添加菜单的实现。涉及layui数据表格、控制器和模型的操作,以及前端页面的渲染。
摘要由CSDN通过智能技术生成

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
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值