2011-12-03 3 views
0

내 응용 프로그램에 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에 대한 장을 읽었지만 빛을 비추 지 않았다.

편집 : 좋아, 그냥 내 번들 클래스에 내 확장을 수동으로 등록 할 필요가 없다는 것을 알았습니다. 지금 내 애플 리케이션에서 코드를 제거했지만 여전히 동일한 예외가 발생합니다.

답변

1

기본 설정을 다시 읽은 후에 모든 기능이 제 나뭇 가지 함수 호출과 별개로 보인다.

{{ knp_menu_render('main') }} 
관련 문제