Symfony2: KnpMenuBundle: в меню «главное» не определено исключение в шаблоне рендеринга - PullRequest
1 голос
/ 08 декабря 2011

Я использую Symfony2 с KnpMenuBundle, установленной в качестве подмодулей, и использую service метод конфигурации.

При вызове страницы с меню в макете используется:

{{ knp_menu_render('main') }}

Я получаю ошибку:

Исключение было сгенерировано во время рендеринга шаблона ("The меню "main" не определено. ") в CCGlobalBundle :: layout.html.twig

Мой файл services.yml (анализируется в методе load () класса пакета CCGlobalExtension.php), кажется, вызывается как преднамеренные ошибки, вызывающие дальнейшие ошибки кода:

# 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: фатальное исключение в контейнере службы

Кто-нибудь знает, в чем может быть проблема (также проверил проблемы с Git) для этого?

Ответы [ 2 ]

2 голосов
/ 03 мая 2013

Я столкнулся с этой проблемой, но обнаружил это исключение " Меню 'main' не определено " было выдано , потому что я не зарегистрировал службу MyCompany / MyBundle / Resources /config/services.yml в приложении / config / config.yml. Исправлено так:

http://symfony.com/doc/current/book/service_container.html

# app/config/config.yml
imports:
    - { resource: "@MyCompanyMyBundle/Resources/config/services.yml" }
0 голосов
/ 09 декабря 2011

В Git была введена ошибка кода.Проблема git здесь: https://github.com/KnpLabs/KnpMenuBundle/issues/89

Изменение для других, ищущих, было строкой 28 из /vendor/bundles/Knp/Bundle/MenuBundle/DependencyInjection/KnpMenuExtension.php должно было прочитать:

$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 * '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...