2013-01-02 2 views
0

XML로 작성하는 방법은 무엇입니까?Symfony 2 yaml to XML

# src/Acme/MainBundle/Resources/config/services.yml 
services: 
    acme_main.menu_builder: 
     class: Acme\MainBundle\Menu\MenuBuilder 
     arguments: ["@knp_menu.factory"] 

    acme_main.menu.main: 
     class: Knp\Menu\MenuItem # the service definition requires setting the class 
     factory_service: acme_main.menu_builder 
     factory_method: createMainMenu 
     arguments: ["@request"] 
     scope: request # needed as we have the request as a dependency here 
     tags: 
      - { name: knp_menu.menu, alias: main } # The alias is what is used to retrieve the menu 

나는 그것을 시도했지만 다음 오류가 발생했습니다 : XML을 :

<!-- Knp Menu --> 
<service id="acme.menu_builder" class="Acme\FrontendBundle\Menu\MenuBuilder"> 
    <argument type="service" id="knp_menu.factory" /> 
    <argument type="service" id="security.context" /> 
</service> 

<service id="acme.menu.main" class="Acme\Menu\MenuItem" scope="request"> 
    <argument type="service" id="acme_menu.menu_builder" /> 
    <argument type="service" id="request" /> 
    <tag name="knp_menu.menu" alias="main" method="createMainMenu" /> 
</service> 

오류 : ErrorException: Catchable Fatal Error: Argument 2 passed to Knp\Menu\MenuItem::__construct() must implement interface Knp\Menu\FactoryInterface, instance of Symfony\Component\HttpFoundation\Request given

+0

이제 타사 [Symfony2 Service Config Converter] (http://converter.rosstuck.com/)로 자동 변환 할 수 있습니다. – RelaXNow

답변

3
당신의 XML 형식을 얻었 는가

? 그것은 예를 들어, acme.menu_builder는 YAML의 Acme\MainBundle\Menu\MenuBuilder 클래스와 XML의 Acme\FrontendBundle\Menu\MenuBuilder있다 (일부는 완전히 다른 설정처럼 보인다. 그리고 acme.menu_builder 서비스는 XML에서 1 개 YAML의 인수 및 2있다?

귀하의 질문에 대답하기 위해서는해야

<services> 
    <service id="acme_main.menu_builder" 
     class="Acme\MainBundle\Menu\MenuBuilder" 
    > 
     <argument type="service" id="knp_menu.factory" /> 
    </service> 

    <service id="acme_main.menu.main" 
     class="Knp\Menu\MenuItem" 
     factory-service="acme_main.menu_builder" 
     factory-method="createMainMenu" 
     scope="request" 
    > 
     <argument type="service" id="request" /> 
     <tag name="knp_menu.menu" alias="main" /> 
    </service> 
</services>