标签:mon root 传统 hold oct master menu asc 方便
最近做一个小项目,用的symfony3玩的。
<?php/** * Created by PhpStorm. * User: 27981 * Date: 2016/11/13 * Time: 20:33 */namespace Lot\AclBundle\Menu;use Knp\Menu\Util\MenuManipulator;use Doctrine\Common\Util\Debug;use Knp\Menu\FactoryInterface;use Symfony\Component\DependencyInjection\ContainerAwareInterface;use Symfony\Component\DependencyInjection\ContainerAwareTrait;class AdminBuilder implements ContainerAwareInterface{ use ContainerAwareTrait; public function mainMenu(FactoryInterface $factory, array $options) {// 获取doctrine服务方便进行数据库操作 $em = $this->container->get(‘doctrine‘)->getManager();// 开始创建菜单 $menu = $factory->createItem(‘root‘,array(‘label‘=>‘主页‘));// 从数据库读出所有的链接 $linklist = $em->getRepository(‘LotAclBundle:Linkadmin‘)->getLinkList(true,true);// 遍历列出一级栏目 foreach ($linklist as $lk=>$lv) {// 添加一级栏目 $menu->addChild($lv[‘id‘],array(‘label‘=>$lv[‘routeLabel‘],‘attributes‘=> array( ‘icons‘ => $lv[‘iconName‘] )));// 遍历列出二级栏目 if(isset($lv[‘sLinkList‘]) && !empty($lv[‘sLinkList‘])) { foreach ($lv[‘sLinkList‘] as $sk=>$sv) {// 执行添加二级栏目 $menu[$lv[‘id‘]]->addChild($sv[‘id‘], array( ‘route‘ => $sv[‘routeName‘], ‘label‘ => $sv[‘routeLabel‘], ‘attributes‘ => array(‘describe‘ => $sv[‘describe‘]), )); $treeLink = $em->getRepository(‘LotAclBundle:Linkadmin‘)->findOneBy(array( ‘linkPid‘ => $sv[‘id‘], ‘isShow‘ => 0, ‘isDelete‘ => 0, ) ); if(!empty($treeLink)) {// 三级 $menu[$lv[‘id‘]][$sv[‘id‘]]->addChild($treeLink->getId(), array( ‘route‘ => $treeLink->getRouteName(), ‘label‘ => $treeLink->getRouteLabel(), ‘attributes‘ => array(‘describe‘ => $treeLink->getDescribe()), )); } } } } return $menu; }}{% set menuItem = knp_menu_get(‘LotAclBundle:AdminBuilder:mainMenu‘) %}<!------菜单-------><div id="sidebar" class="sidebar"> <div class="sidebar-menu nav-collapse"> <div class="divide-20"></div> <!-- SEARCH BAR --> <div id="search-bar"> <input class="search" type="text" placeholder="Search"><i class="fa fa-search search-icon"></i> </div> <!-- /SEARCH BAR --> <!-- 左侧菜单开始 --> <ul> {% if menuItem.children is defined and menuItem.children is not empty %} {% for lkey in menuItem.children %} <li class="has-sub"> <a href="javascript:;" class=""> <i class="fa {{ lkey.attributes.icons }}"></i> <span class="menu-text">{{ lkey.label }}</span> <span class="arrow"></span> </a> {% if lkey.children is defined and lkey.children is not empty %} <ul class="sub"> {% for skey in lkey.children %} <li><a class="" href="{{ skey.uri is defined ? skey.uri: ‘#‘ }}"><span class="sub-menu-text">{{ skey.label is defined ? skey.label : ‘‘ }}</span></a></li> {% endfor %} </ul> {% endif %} </li> {% endfor %} {% endif %} </ul> <!-- /左侧菜单结束 --> </div></div><!-- SIDEBAR --><!------菜单------->{#<div id="sidebar" class="sidebar">#} {#<div class="sidebar-menu nav-collapse">#} {#<div class="divide-20"></div>#} {#<!-- SEARCH BAR -->#} {#<div id="search-bar">#} {#<input class="search" type="text" placeholder="Search"><i class="fa fa-search search-icon"></i>#} {#</div>#} {#<!-- /SEARCH BAR -->#} {#<!-- 左侧菜单开始 -->#} {#<ul>#} {#{% if linklist is defined and linklist is not empty %}#} {#{% for list in linklist %}#} {#<li class="has-sub">#} {#<a href="javascript:;" class="">#} {#<i class="fa {{ list.iconName is defined ? list.iconName : ‘‘ }}"></i> <span class="menu-text">{{ list.routeLabel is defined ? list.routeLabel : "" }}</span>#} {#<span class="arrow"></span>#} {#</a>#} {#{% if list.sLinkList is defined and list.sLinkList is not empty %}#} {#<ul class="sub">#} {#{% for slist in list.sLinkList %}#} {#<li><a class="" href="{{ slist.routeName is defined ? path(slist.routeName): ‘#‘ }}"><span class="sub-menu-text">{{ slist.routeLabel is defined ? slist.routeLabel : ‘‘ }}</span></a></li>#} {#{% endfor %}#} {#</ul>#} {#{% endif %}#} {#</li>#} {#{% endfor %}#} {#{% endif %}#} {#</ul>#} {#<!-- /左侧菜单结束 -->#} {#</div>#}{#</div>#}<!-- /SIDEBAR --> $parent = $menu->addChild(‘Users‘, array(‘route‘ => ‘users‘)); $parent->addChild(‘Edit‘, array(‘route‘ => ‘user_edit‘, ‘routeParameters‘ => array(‘id‘ => $request->get(‘id‘))));获取栏目总数据
knp_menu_get()
{% set menuItem = knp_menu_get(‘LotAclBundle:AdminBuilder:mainMenu‘) %}
获取当前的栏目数据
knp_menu_get_current_item()
{% set currentInfo = knp_menu_get_current_item(menuItem) %}
获取面包屑数据
knp_menu_get_breadcrumbs_array()
<!-- 面包屑开始 --> <ul class="breadcrumb"> {% for breadcrumb_item in knp_menu_get_breadcrumbs_array(knp_menu_get_current_item(menuItem)) %} {% if not loop.last %} <li><a href="{{ breadcrumb_item.uri }}">{{ breadcrumb_item.label }}</a></li> {% else %} <li class="active">{{ breadcrumb_item.label }}</li> {% endif %} {% endfor %} </ul> <!-- /面包屑结束 -->
标签:mon root 传统 hold oct master menu asc 方便
原文地址:http://www.cnblogs.com/g825482785/p/SymfonyKnpMenuBundle.html