【问题标题】:Symfony2 - KnpMenuBundle: Fatal exception in service containerSymfony2 - KnpMenuBundle:服务容器中的致命异常
【发布时间】:2011-12-03 11:05:29
【问题描述】:

我在我的应用程序中使用KnpMenuBundle,并按照他们的说明将我的菜单设置为服务。

每当我尝试使用 twig 辅助函数来呈现菜单时

{{ knp_menu_render('VhotoHelperBundle:MenuBuilder:mainMenu') }}

它给了我以下错误...

在渲染模板期间抛出异常(“可捕获的致命错误:传递给 Vhoto\HelperBundle\Menu\MenuBuilder::__construct() 的参数 1 必须实现接口 Knp\Menu\FactoryInterface,没有给出

我的 services.yml 文件存在于我的包的 Resources/config 目录中,并且具有以下内容:

services:
  vhoto.menu_builder:
    class: Vhoto\HelperBundle\Menu\MenuBuilder
    arguments: ["@knp_menu.factory"]

  vhoto.menu.main:
    class: Knp\Menu\MenuItem
    factory_service: vhoto.menu_builder
    factory_method: createMainMenu
    arguments: ["@request"]
    scope: request
    tags:
      - { name: knp_menu.menu, alias: main }

我在包的DependencyInjection 目录中创建了一个扩展类:

class VhotoHelperExtension extends Extension
{
    public function load(array $config, ContainerBuilder $container)
    {
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

并更新了我的包的构建方法来注册扩展:

public function build(ContainerBuilder $container)
{
    parent::build($container);
    $container->registerExtension(new VhotoHelperExtension());
}

我想不通的是为什么我的arguments: ["@knp_menu.factory"] 配置没有生效,我在扩展类中遗漏了什么吗?我阅读了Exposing Semantic Configuration for bundles 上的章节,但没有任何启示。

编辑:好的,刚刚意识到我不需要在我的包类中手动注册我的扩展。现在从我的应用程序中删除了该代码,但仍然出现相同的异常。

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    好的,在重新阅读基本设置后,除了我的 twig 函数调用之外,似乎一切都正确。

    {{ knp_menu_render('main') }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2014-05-20
      • 2016-01-06
      相关资源
      最近更新 更多