2015-07-20 39 views
4

我在symfony的2.7和需要覆蓋的Symfony \分量\資產\ UrlPackage的Symfony:覆蓋的Symfony服務(編譯通)

我已經看了http://symfony.com/doc/current/cookbook/bundles/override.htmlhttp://symfony.com/doc/current/cookbook/service_container/compiler_passes.html ,但不能讓它工作。

我在我的包MyApp \ CoreBundle \ Overrides \ UrlPackage中創建了一個文件; 我註冊UrlPackage作爲服務和附加功能:

public function process(ContainerBuilder $container) 
{ 
    $definition = $container->getDefinition('assets.url_package'); 
    $definition->setClass('MyApp\CoreBundle\Overrides\UrlPackage'); 
} 

奇怪的是,如果我在任何控制器調用$this->has('assets.url_package'),返回false。 我也從服務文件抓住它的Symfony下:

<service id="assets.url_package" class="Symfony\Component\Asset\UrlPackage" abstract="true"> 
     <argument /> <!-- base URLs --> 
     <argument type="service" /> <!-- version strategy --> 
     <argument type="service" id="assets.context" /> 
    </service> 

如果我運行php app/console debug:container,從symfony中的UrlPackage是不是在那裏,但是,如果我改變了供應商/ */UrlPackge文件裏面的東西,它沒有工作

有人可以指出我在正確的方向嗎?

+2

它不應該是必要使用編譯器傳遞到覆蓋現有的服務 - 該服務的定義應該足夠了。你確定你使用了正確的服務ID嗎?我使用2.6,在這個版本中它是'templating.asset.url_package'。 – mickadoo

+0

是的,他們改變了,所有的templating.assets設置也被棄用,資產現在是它自己的東西,而且,urlpackage是一個可以被覆蓋的參數,現在它不是:( - http://symfony.com /博客/新功能於symfony的-2-7-的新資產組分 – Mazzy

回答