添加功能调用方法显示一级菜单以及所有子菜单
public function add()
{
$menus_list = $this->db->table('admin_menus')->where(array('status'=>0))->cates('mid');
$menus = $this->getTreeItems($menus_list);
$result = array();
foreach ($menus as $value){
$value['children'] = isset($value['children']) ? $this->formatMenus($value['children']) :false;
$result[] = $value ;
}
$this->view->assign('menus',$result);
return $this->view->fetch('add');
}
//树形显示所有菜单
private function getTreeItems($items){
$tree = array();
foreach ($items as $item){
if (isset($items[$item['pid']])){
$items[$item['pid']]['children'][]=&$items[$item['mid']];
}
else{
$tree[] = &$items[$item['mid']];
}
}
return $tree;
}
// 除了顶级菜单 都是二级显示
private function formatMenus($items ,&$res=array()){
foreach ($items as $item){
if (!isset($item['children'])){
$res[] = $item;
}
else{
$tem = $item['children'];
unset($item['children']);
$res[] = $item;
$this->formatMenus($tem , $res);
}
}
return $res;
}
前台代码
<div class="layui-form-item">
<label class="layui-form-label">权限菜单</label>
{volist id="vo" name="menus"}
<div class="layui-input-block">
<div style="border: 3px solid gainsboro; margin: 5px 0; padding: 5px;">
<input type="checkbox" name="menu[{$vo.mid}]" lay-skin="primary" title="{$vo.title}">
<hr>
{volist id="cvo" name="vo.children"}
<input type="checkbox" name="menu[{$cvo.mid}]" lay-skin="primary" title="{$cvo.title}">
{/volist}
</div>
</div>
{/volist}
</div>
成品样式