我正在拼命地尝试在 symfony-cmf 中渲染一个子菜单。
例子
结构:
page1
├─p1-subpage1
├─p1-subpage2
└─p1-subpage3
page2
├─p2-subpage1
└─p2-subpage2
每当当前页面在page1
层次结构中的某个位置时,它应该p1-subpage*
用来呈现菜单,当我在page2
层次结构中时,它应该p2-subpage*
用来呈现菜单。从技术上讲,这意味着它应该将当前项目设置为第一级的父项(如果它还没有在它上面)并渲染一级节点(例如knp_menu_render('main', { depth: 1 })
)。
问题可以分为两部分:
- 从给定节点呈现(子)菜单
- 检索当前节点
思考与试验
- TWIG:有人建议支持渲染子菜单作为 KnpMenu 本身的功能,但尚未完成。作为解决方法,注册树枝扩展已由问题中的某个人提供。但是,此扩展基于已随 KNP-Menu 2.0删除
getCurrentItem
的方法。尽管 cmf当前使用的是 knp-menubundle v1.1,但很快就会改变 - TWIG:CnertaBreadcrumbBundle将带回此功能,但也取决于KNP-Menu 2.0。
- TWIG:使用与此处建议的类似的hack。它检查当前的 URI,计算斜杠的数量并根据它决定使用什么。这可能会奏效。这里的问题:我没有
cmfMainContent
定义变量,也找不到类似的东西{{ dump() }}
(也没有包含菜单)。 - RouteVoter: cmf 本身有一些 MenuVoters 本身,它们有很好的文档说明它们是什么,但没有说明如何使用它们。我认为没有任何方法可以访问该功能whithin twig也不知道如何拦截菜单构建。
谢谢你的帮助。