2012-08-24 4 views
6

번들 구성을 다른 번들에서 수정할 수 있는지 궁금합니다.다른 번들에서 번들 구성을 수정하십시오.

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Acme\UserBundle\Entity\User 

을 그리고 특정 확장합니다 (AcmeFoobarExtension를)로드 할 때 지금은 사용자 클래스를 변경하려면 :의 예를 들어, 나는 다음과 같은 구성으로 FOSUserBundle을 사용하고, 가정 해 봅시다. 로드 할 때 구성을 변경할 수 있습니까 AcmeFoobarExtension? 예 :

<?php 
namespace Acme\FoobarBundle\DependencyInjection; 

// use statements for dependency injection 

class FoobarExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $container->setConfiguration(
      'fos_user.user_class', 
      'Acme\FoobarBundle\Entity\User' 
     ); 
    } 
} 

이렇게 할 수 있습니까? 아니면 의존성 주입의 목적을 무효로합니까?

편집 : 분명히이 아이디어/문제를 해결하는 Symfony 2.2에 대해 pull request이 있습니다.

EDIT 2 : 이제 Symfony 2.2 (article in the cookbook)에서 사용할 수 있습니다.

+0

답변이 있으면 다른 사람들의 깨달음에 대한 자신의 질문에 대한 답변을 게시 할 수 있습니다. – neontapir

답변

1

Symfony 사용자 메일 링리스트 (here's the question)에서 동일한 질문을 한 후,이 아이디어에 대해 열린 pull request이 있음을 알게되었습니다.

버전 2.2이며 아직 마스터에 병합되지는 않았지만 마지막 활동은 3 일 전부터이므로 최선을 다하겠습니다.

6

지금 심포니의 공식 기능입니다 주목해야한다 :

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

번들은 글로벌 구성 매개 변수 구성 값을 앞에 추가 할 수 있습니다. 이를 위해 번들 확장은 PrependExtensionInterface을 구현해야합니다. prepend() 메소드는 전역 구성 값을 추가 할 수 있습니다.

그러나 다른 번들 및 구성 파일 자체에서 값을 덮어 쓸 수 있습니다.

관련 문제