我正在使用Symfony2并将KnpMenuBundle作为子模块安装并使用 service 配置方法。
使用以下方法使用布局中的菜单调用页面时:
{{ knp_menu_render('main') }}
我收到错误:
在渲染模板期间抛出异常(“The 菜单“main”未定义。“)在CCGlobalBundle :: layout.html.twig
中
我的services.yml文件(在CCGlobalExtension.php包类的load()方法中解析)似乎被称为故意错误导致进一步的代码错误:
# src/CC/GlobalBundle/Resources/Config/services.yml
services:
cc_global.menu_builder:
class: CC\GlobalBundle\Menu\MenuBuilder
arguments: ["@knp_menu.factory"]
cc_global.menu.main:
class: Knp\Menu\MenuItem # the service definition requires setting the class
factory_service: cc_global.menu_builder
factory_method: createMainMenu
arguments: ["@request"]
scope: request # needed as we have the request as a dependency here
tags:
- { name: knp_menu.menu, alias: main }
我的主/app/config/config.yml文件包含knp_menu:指令:
knp_menu:
twig:
template: knp_menu.html.twig
templating: false # if true, enables the helper for PHP templates
default_renderer: twig # The renderer to use, list is also available by default
存在相同的问题,但没有特定的解决方案在此处起作用:Symfony2 - KnpMenuBundle: Fatal exception in service container
有没有人知道这可能是什么问题(也检查了Git问题)?
答案 0 :(得分:2)
我遇到了这个问题,但发现此异常“菜单'main'未定义”被抛出因为我没有注册MyCompany / MyBundle的服务 app / config / config.yml中的/Resources/config/services.yml。 修正如下:
http://symfony.com/doc/current/book/service_container.html
# app/config/config.yml
imports:
- { resource: "@MyCompanyMyBundle/Resources/config/services.yml" }
答案 1 :(得分:0)
Git引入了代码错误。 git问题在这里:https://github.com/KnpLabs/KnpMenuBundle/issues/89
其他人看到的变化是/vendor/bundles/Knp/Bundle/MenuBundle/DependencyInjection/KnpMenuExtension.php的第28行应该已经读过:
$container->getDefinition(sprintf('knp_menu.menu_provider.%s', $builder))->addTag('knp_menu.provider');
虽然读取了错误的代码:
$container->getDefinition(sprintf('knp_menu.menu_provider.%s', $builder))->addTag('knp_menu.menu_provider');
注意' 提供商 '与' * menu_provider * '