내 응용 프로그램에 KnpMenuBundle을 사용하고 있으며, 지시에 따라 서비스 메뉴로 설정했습니다.Symfony2 - KnpMenuBundle : 서비스 컨테이너에서 치명적인 예외가 발생했습니다.
나는
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
에 존재 ... 나뭇 가지 도우미 함수
{{ knp_menu_render('VhotoHelperBundle:MenuBuilder:mainMenu') }}
그것은 나에게 다음과 같은 오류를 제공를 사용하여 메뉴를 렌더링하려고 할 때마다 디렉토리이며 다음 내용을 포함합니다.
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에 대한 장을 읽었지만 빛을 비추 지 않았다.
편집 : 좋아, 그냥 내 번들 클래스에 내 확장을 수동으로 등록 할 필요가 없다는 것을 알았습니다. 지금 내 애플 리케이션에서 코드를 제거했지만 여전히 동일한 예외가 발생합니다.