This stackoverflow solution almost answers my question. But I want to generate CDN urls in Twig
to more than just resources. I'd like to generate them for dynamic content. So I don't think an Assetic tweak is the right area to be looking.
For now, I can set CDN_url in parameters.ini
and use that in my urls. My code would look like this : {{CDN_Url}}{{url('route',{'param1':'value'}}
.. Code maintenance is one major reason I don't like this option. Then you could do things like check the route for /cdn/
to generate the CDN url and everything else to be based on the domain. I wouldn't have to run around changing a lot of variables. AND if I wanted to stop the CDN url from generating. I could just modify the route. So there's a lot of benefits to figuring out if there's a clean solution to this.
If, there's not a solution already - how would I start to extend the {{ url() }}
functionality so that I could use it like path
and url
.
You can do it with the help of the question you linked by following way
{{ asset(path('route',{'param1':'value'})) }}
If you need to handle multiple CDN domains you can do it by following way
In app/config.yml
# app/config.yml
#....
templating:
engines: ['twig']
packages:
cdn1:
base_urls: ["http://cdn1.domain.com"]
cdn2:
base_urls: ["http://cdn2.domain.com"]
And then in your twig template file
{{ asset('path/of/file', 'cdn1')
OR
{{ asset('path/of/file', 'cdn2')
I don't know about the CDN stuff but as far as extending the url function, take a look at:
Symfony\Bridge\Twig\Extension\RoutingExtension
public function __construct(UrlGeneratorInterface $generator)
{
$this->generator = $generator;
}
public function getFunctions()
{
return array(
'url' => new \Twig_Function_Method($this, 'getUrl'),
'path' => new \Twig_Function_Method($this, 'getPath'),
);
}
public function getPath($name, $parameters = array())
{
return $this->generator->generate($name, $parameters, false);
}
public function getUrl($name, $parameters = array())
{
return $this->generator->generate($name, $parameters, true);
}
So you could get at getUrl there or you could insert you own UrlGenerator. Not sure which would be easier in your specific case. Probably making your own UrlGenerator.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With