thinkphp5动态读库 显示树形菜单栏,目前是两级,还可以三级,等无限拓展

如图:效果

控制器的写法:我是在公共构造函数里面写的
  
$authRule = db('auth_rule')->where('level<2')->select();        level 是级别,我的数据库中 
                                        0是顶级,1是二级,  目前只是想二级联动输出,所以小于2
        $menus = array();       
        foreach ($authRule as $key=>$val){
            $authRule[$key]['name'] = url($val['name']);   //重新组装name值

            if($val['pid']==0){           //判断是否是顶级菜单

                        $menus[] = $val;    
              
            }
        }
      
        foreach ($menus as $k=>$v){
            foreach ($authRule as $kk=>$vv){
                if($v['id']==$vv['pid']){
                    
                        
                            $menus[$k]['children'][] = $vv;
                    
                    
                }
            }
        }
         
               // $this->assign('menus', json_encode($menus,true));     //如果要在JS中接收的话要做这样的处理, 这里我没有在JS中接收,所以注释
        $this->assign('menus',$menus);
前端模板页面的接收:


<div class="page-sidebar" id="sidebar">

    <ul class="nav sidebar-menu">
    {volist name="menus" id="vo"}     //第一次循环模板:获取顶级 菜单
        <!--Dashboard-->
        <li>
            <a href="#" class="menu-dropdown">
                <i class="menu-icon fa fa-user"></i>
                <span class="menu-text">{$vo.title}</span>
                <i class="menu-expand"></i>
            </a>
                        //判断是否存在子级菜单,如果要拓展孙级别菜单的话同种做法
          {if isset($vo['children'])}
            <ul class="submenu">
            
            {volist name="$vo['children']"  id="no"}           //循环输出子级菜单
                <li>
                    <a href="{$no.name}">                    //跳转
                                    <span class="menu-text">
                                    {$no.title}                //子级菜单名字

                                   
                                    </span>
                        <i class="menu-expand"></i>
                    </a>
                </li>
                {/volist}
              
            </ul>
            {/if}
        </li>

      {/volist}

    </ul>
    <!-- /Sidebar Menu -->
</div>

数据库的表

猜你喜欢

转载自blog.csdn.net/heyuqing32/article/details/81204458