我使用的是symfony 2.7版本,需要覆盖Symfony\Component\Asset\UrlPackage类。
我已经查看了http://symfony.com/doc/current/cookbook/bundles/override.html 和http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html 但无法使其正常工作。
我在我的bundle 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不在其中,但是,如果我更改vendor/*/UrlPackge文件中的内容,它会起作用。请问有人能指点一下吗?
templating.asset.url_package
。 - mickadoo