Skip to content
Advertisement

Symfony: Overriding Symfony service ( compiler pass )

I’m on symfony 2.7 and need to override SymfonyComponentAssetUrlPackage

I’ve looked at http://symfony.com/doc/current/cookbook/bundles/override.html and http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html but can’t get it working.

I have made a file in my bundle MyAppCoreBundleOverridesUrlPackage; I registered UrlPackage as a service and added a function:

JavaScript

The weird thing is, if I call $this->has('assets.url_package') in any controller, it returns false. I did grab it from the services file under Symfony:

JavaScript

If I run php app/console debug:container, the UrlPackage from symfony isn’t in there, but, if I change something inside the vendor/*/UrlPackge file, it does work

Can someone point me in the right direction?

Advertisement

Answer

Decorating the service is the thing you’re looking for:

JavaScript

You can inject the original service in your own service, and implement the original interface to make them compatible.

http://symfony.com/doc/2.7/service_container/service_decoration.html

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement