Layui从数据库获取数据生成动态菜单
时间: 2023-06-20 21:08:15 浏览: 64
可以使用 layui 的菜单组件 `layui-nav` 和 `layui-nav-item` 来生成动态菜单。具体步骤如下:
1. 在数据库中创建一个菜单表,包含菜单的 id、名称、链接、父菜单 id 等字段。
2. 使用后端语言(比如 PHP、Java、Python 等)从数据库中获取菜单数据,并将数据格式化为 JSON 格式。
3. 在前端页面中引入 layui 的依赖,并使用 `layui-nav` 和 `layui-nav-item` 组件来生成菜单。示例代码如下:
```html
<!-- 引入 layui 的依赖 -->
<link rel="stylesheet" href="/layui/css/layui.css">
<script src="/layui/layui.js"></script>
<!-- 渲染菜单 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<!-- 循环遍历菜单数据 -->
{{# layui.each(d.menuData, function(index, item){ }}
<!-- 判断是否为一级菜单 -->
{{# if(item.parentId == 0){ }}
<li class="layui-nav-item">
<!-- 显示菜单名称 -->
<a href="{{ item.url }}">{{ item.name }}</a>
<!-- 判断是否有子菜单 -->
{{# if(item.children.length > 0){ }}
<dl class="layui-nav-child">
<!-- 循环遍历子菜单 -->
{{# layui.each(item.children, function(index, item){ }}
<dd><a href="{{ item.url }}">{{ item.name }}</a></dd>
{{# }); }}
</dl>
{{# } }}
</li>
{{# } }}
{{# }); }}
</ul>
<!-- 引入菜单数据 -->
<script>
layui.use(['jquery', 'element'], function(){
var $ = layui.$;
var element = layui.element;
// 获取菜单数据
$.ajax({
url: '/getMenuData',
success: function(res){
// 渲染菜单
element.render('nav');
}
});
});
</script>
```
4. 在后端语言中实现 `/getMenuData` 接口,返回菜单数据。示例代码如下(使用 PHP 语言):
```php
// 获取菜单数据
function getMenuData(){
// 查询数据库获取菜单数据
$menuData = array(
array(
'id' => 1,
'name' => '首页',
'url' => '/',
'parentId' => 0,
'children' => array(),
),
array(
'id' => 2,
'name' => '菜单1',
'url' => '',
'parentId' => 0,
'children' => array(
array(
'id' => 21,
'name' => '子菜单1',
'url' => '/menu1/1',
'parentId' => 2,
'children' => array(),
),
array(
'id' => 22,
'name' => '子菜单2',
'url' => '/menu1/2',
'parentId' => 2,
'children' => array(),
),
),
),
array(
'id' => 3,
'name' => '菜单2',
'url' => '',
'parentId' => 0,
'children' => array(
array(
'id' => 31,
'name' => '子菜单3',
'url' => '/menu2/3',
'parentId' => 3,
'children' => array(),
),
),
),
);
// 将菜单数据转换为 JSON 格式返回
return json_encode($menuData);
}
```
注意:以上示例代码仅为演示用途,实际使用时需要根据实际情况进行修改。