问题标签 [knpmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3155 浏览

symfony - Symfony 和 KNPmenu 中带有参数的嵌套菜单

我正在努力使用 Symfony2 和 Knpmenu 来构建一个菜单来处理:

  • 面包屑
  • 动态参数路由
  • 从不同的子级开始渲染单独的菜单

我的Menu/Builder.php文件看起来像这样(navbar、pull-nav 等额外的位是 mopa_bootstrap 扩展的一部分,它使用引导类处理渲染):

这个想法是有一个仅打印前两个级别的主菜单,以及一个在其他地方呈现的单独菜单,以允许用户在正在查看的特定元素的编辑/删除/任何视图之间移动。

我想要实现的是拥有一个单一的结构,从而处理育儿结构,不仅让签名父母在菜单中处于活动状态,而且能够处理工作面包屑结构。

Resources/views/base.html.twig我这样调用主菜单时:

理想情况下,子菜单是这样的:

然而:

  1. knpmenu 在渲染主菜单时返回错误,因为$options['id']未定义
  2. 我仍然无法呈现二级菜单(因此通过传递参数“用户”) - 页面只是在该块中返回黑色输出

这种方法正确吗?我正在使用"knplabs/knp-menu": "2.0.*@dev""symfony/symfony": "2.5.*"

0 投票
2 回答
1860 浏览

php - Access Container or securityContext or EntityManager from MenuBuilder through RequestVoter

I found this piece of code shared in a Gist (somewhere I lost the link) and I needed something like that so I started to use in my application but I have not yet fully understood and therefore I am having some problems.

I'm trying to create dynamic menus with KnpMenuBundle and dynamic means, at some point I must verify access permissions via database and would be ideal if I could read the routes from controllers but this is another task, perhaps creating an annotation I can do it but I will open another topic when that time comes.

Right now I need to access the SecurityContext to check if the user is logged or not but not know how.

I'm render the menu though RequestVoter (I think) and this is the code:

All the code related to securityContext was added by me in a attempt to work with it from the menuBuilder. Now this is the code where I'm making the menu:

But this is complete wrong since I'm not passing securityContext to the method and I don't know how to and I'm getting this error:

An exception has been thrown during the rendering of a template ("Notice: Undefined property: PlantillaBundle\Menu\MenuBuilder::$securityContext in /var/www/html/src/PlantillaBundle/Menu/MenuBuilder.php line 12") in /var/www/html/src/PlantillaBundle/Resources/views/menu.html.twig at line 2.

The voter is defined in services.yml as follow:

So, how I inject securityContext (I'll not ask for EntityManager since I asume will be the same procedure) and access it from the menuBuilder?

Update: refactorizing code

So, following @Cerad suggestion I made this changes:

services.yml

MenuBuilder.php

Abd ib my template just render the menu {{ knp_menu_render('frontend_menu') }} but now I loose the FontAwesome part and before it works, why?

0 投票
3 回答
968 浏览

symfony - 如何在 symfony-cmf 中渲染子菜单

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

例子

结构:

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

问题可以分为两部分:

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

思考与试验

  • TWIG:有人建议支持渲染子菜单作为 KnpMenu 本身的功能,但尚未完成。作为解决方法,注册树枝扩展已由问题中的某个人提供。但是,此扩展基于随 KNP-Menu 2.0删除getCurrentItem的方法。尽管 cmf当前使用的是 knp-menubundle v1.1,但很快就会改变
  • TWIGCnertaBreadcrumbBundle将带回此功能,但也取决于KNP-Menu 2.0。
  • TWIG使用与此处建议的类似的hack。它检查当前的 URI,计算斜杠的数量并根据它决定使用什么。这可能会奏效。这里的问题:我没有cmfMainContent定义变量,也找不到类似的东西{{ dump() }}(也没有包含菜单)。
  • RouteVoter: cmf 本身有一些 MenuVoters 本身,它们有很好的文档说明它们是什么,但没有说明如何使用它们。我认为没有任何方法可以访问该功能whithin twig也不知道如何拦截菜单构建

谢谢你的帮助。

0 投票
0 回答
131 浏览

php - 从 Symfony2 中的 MenuBuilder 类生成格式良好的路由

我在控制器中定义了这条路线:

我需要在 KNPMenuBundle MenuBuilder 类中设置正确的路线。我正在做如下:

它适用于dev环境,因为路由显示了正确的页面并执行了正确的代码,但是如果我离开dev并上线,prod那么我得到了一个404 Not found,在这种情况下我做错了什么?在类内生成路由的正确方法应该是什么MenuBuilder?有什么建议吗?

0 投票
0 回答
34 浏览

symfony - KnpMenuBundle 子对象使其他内容成为当前的

我有以下结构:

并且

/list如果选择了详细信息页面之一,当然如果选择了实际列表,我现在希望导航将其作为活动元素。

我的导航如下所示:

我正在阅读其他一些问题,但我无法找到适合我的正确答案。因为我没有描述的菜单项List Detail

0 投票
3 回答
4500 浏览

php - KnpMenuBundle - 如何为菜单的每个元素设置图标类?

我想我的视图代码如下所示:

我通过 Menu Builder 创建菜单元素:

我用以下代码(knp_menu.html.twig)覆盖了视图:

如何<i>在 Builder 类中将图标类名称的值传递给方法 adminMenu() 中的元素?最简单的方法是什么?

0 投票
1 回答
755 浏览

php - 删除 KnpMenu 上的 RouteVoter

外联网的每个捆绑包都是一个独立的应用程序。在我的菜单中列出了每个应用程序,我喜欢根据实际路由前缀标记当前应用程序。

首先是base.html.twig中的twig代码:

构建器功能:

如果找到当前菜单,我的 BundleVoter 类工作正常并返回 true。但在 HTML 中,当前元素从不包含“活动”类。

我在 KnpMenuBundle 中阅读了更多内容,并在 Knp\Menu\Matcher 类中添加了一些调试代码:

并得到了这个输出:

神秘的 RouteVoter 从何而来?它会覆盖我对当前元素的 BundleVoter 选择吗?以及如何停用/覆盖它?

0 投票
0 回答
101 浏览

php - KnpMenuBundle - 所有子页面上的当前类

我通过 KnpMenuBundle 创建了一个菜单

当我在带有 url mypage.url/object 的页面上时,一切都很好 - 菜单中的li元素有一个当前类。

但是当我继续使用另一个 url,例如 mypage.url/object/new 时,菜单中的li元素,带有 uri '/object' 没有当前类。

如何使用 uri: '/object' 执行该元素,将有一个当前类并将处于活动状态,即使当前页面(路由)是“在 uri 下” /object。(例如 mypage.url/object/new、mypager.url/object/12/delete 等)?

0 投票
0 回答
802 浏览

php - KnpMenu:向 MenuItem 类添加属性

我通过 KnpMenuBundle 将 KnpMenu 与 Symfony2.3 一起使用。

我想MenuItem通过添加属性来自定义类,这是最简单的方法。

目的是能够将任何MenuItem一个链接到我的应用程序的实体之一,然后再检索它。

例如,我想这样做:

简单但丑陋的方法是编辑Knp\Menu\MenuItem.php并添加:

我知道这不是正确的方法,所以我尝试覆盖Knp\Menu\MenuItem然后Knp\Menu\MenuFactory但这还不够......

我觉得我必须覆盖更多的东西,所以我来咨询一下。捆绑包非常复杂,我觉得这个功能(将类属性添加到 MenuItem)已经由捆绑包管理,尽管我不明白如何。

任何想法?

0 投票
1 回答
1063 浏览

symfony - Symfony2,奏鸣曲:从奏鸣曲包生成的菜单中删除一个动作

我需要清理管理端,使其适合我的客户的需要。

我正在使用 Sonata 的 NewsBundle,实际上我不需要使用评论,所以我想从管理端删除它。至少从菜单上看。有没有办法在配置中禁用它?我在文档中没有找到任何关于此的提示。

这里是我不想再看到它的特定区域:

奏鸣曲菜单

奏鸣曲菜单

顺便说一下,菜单可能是由 KnpMenu 生成的