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