Symfony2:KnpMenuBundle:菜单“main”在渲染模板中未定义异常

时间:2011-12-08 14:50:53

标签: symfony

我正在使用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问题)?

2 个答案:

答案 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 * '