2011-12-03 9 views
0

私のアプリケーションでKnpMenuBundleを使用していますが、私の指示に従ってサービスとしてメニューをセットアップしました。Symfony2 - KnpMenuBundle:サービスコンテナで致命的な例外が発生しました

私はそれは私に次のエラーを与える

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

小枝のヘルパー関数を使用してメニューをレンダリングしようとするたびに...

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Argument 1 passed to Vhoto\HelperBundle\Menu\MenuBuilder::__construct() must implement interface Knp\Menu\FactoryInterface, none given

マイ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の章を読んだが、それは何の光も出さなかった。

EDIT:私のバンドルクラスに手動でエクステンションを手動で登録する必要はありません。私のアプリからそのコードを削除しましたが、今でも同じ例外が発生しています。

答えて

1

基本設定を再読み込みした後、私のtwig関数呼び出しからすべてが正しいと思われました。

{{ knp_menu_render('main') }} 
関連する問題