首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在symfony-cmf中呈现子菜单

如何在symfony-cmf中呈现子菜单
EN

Stack Overflow用户
提问于 2014-11-05 12:45:25
回答 3查看 1K关注 0票数 1

我正拼命地尝试在symfony-cmf中呈现一个子菜单。

示例

结构:

代码语言:javascript
复制
page1
  ├─p1-subpage1
  ├─p1-subpage2
  └─p1-subpage3
page2
  ├─p2-subpage1
  └─p2-subpage2

每当当前页面位于page1层次结构中的某个位置时,它就应该使用p1-subpage*来呈现菜单,而当我在page2层次结构中时,它应该使用p2-subpage*来呈现菜单。从技术上讲,这意味着它应该将当前项设置为第一级的父级(如果它尚未在该级别上),并呈现一个节点级别(例如knp_menu_render('main', { depth: 1 }))。

问题可分为两部分:

  1. 从给定的节点(子)菜单中呈现
  2. 检索当前节点

思想与考验

  • TWIG:支持将子菜单呈现为KnpMenu本身的功能的是建议,但它还没有完成。作为一个解决办法,注册小枝分机已经由问题中的一些人提供了。但是,这个扩展是基于getCurrentItem方法的,使用KNP-菜单2.0方法。尽管cmf 目前使用的1.1版,这是即将改变
  • TWIGThe CnertaBreadcrumbBundle将恢复此功能,但也依赖于KNP-Menux2.0的
  • TWIG类似于这里的建议.它检查当前的URI,计算斜杠的数量,并根据它来决定使用什么。这也许能行。这里的问题是:我没有定义cmfMainContent变量,在{{ dump() }}中也找不到类似的东西(也没有包含菜单)。
  • RouteVoter:cmf本身就有一些MenuVoters本身,这些文档详细说明了它们是什么,而不是如何使用它们。我不认为有任何方法可以实现access,即功能,而不是,我也不知道如何拦截菜单构建

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2014-11-05 16:14:47

在这里查看一个使用选民来决定突出显示什么的例子:https://github.com/dbu/conference-tutorial-1.0/pull/20

除此之外,我们在KnpMenu 2.x兼容版本的MenuBundle上取得了很好的进展,但可能要到明年1月才能稳定发布(但我们可能会更早地发布一个版本)。):https://github.com/symfony-cmf/MenuBundle/pull/214

票数 1
EN

Stack Overflow用户

发布于 2014-11-06 10:08:08

昨天,我为自己的用例创建了一个包。

但是,由于我的所有页面共享相同的路径,您可能需要对其进行大量调整。

我仍然认为你可能会找到一些灵感,特别是在你的问题的第二部分。

我的捆绑:https://github.com/burki94/RecursiveMenuBundle/blob/master/README.md

AbstractRecursiveBuilder:https://github.com/burki94/RecursiveMenuBundle/blob/master/Menu/AbstractRecursiveBuilder.php

票数 1
EN

Stack Overflow用户

发布于 2014-11-06 15:45:15

这并不是一个真正的解决方案,因为它不符合我对兼容KnpMenu 2.*的要求。但是,这个不推荐的解决方案很简单:

代码语言:javascript
复制
     {% set currentItem = knp_menu_get('main').currentItem %}
     {% if currentItem is not null %}
            {% if currentItem.getLevel() == 1 %}
                  {% set main = currentItem %}
            {% else %}
                  {% set main = currentItem.getParent() %}
            {% endif %}
            {{ knp_menu_render(main, { 'template': 'ComBundle:Default:left_menu.html.twig', 'currentClass': 'uk-active' }) }}
     {% endif %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26757539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档