Symfony2/Twig:生成用于CDN的备用绝对URL路径


Symfony2 / Twig : Generate Alternate Absolute URL Path for use with CDN?

这个stackoverflow解决方案几乎回答了我的问题。但我想在Twig中生成CDN URL,而不仅仅是资源。我想为动态内容生成它们。所以我不认为阿塞蒂的调整是合适的。

现在,我可以在parameters.ini中设置CDN_url,并在我的url中使用它。我的代码如下:{{CDN_Url}}{{url('route',{'param1':'value'}}。。代码维护是我不喜欢这个选项的一个主要原因。然后,您可以做一些事情,比如检查/cdn/的路由以生成CDN url,以及基于域的其他一切。我不必到处跑来跑去改变很多变量。如果我想停止生成CDN url。我可以修改路线。因此,弄清楚是否有一个干净的解决方案有很多好处。

如果还没有解决方案,我该如何开始扩展{{ url() }}功能,以便像使用pathurl一样使用它。

您可以在通过以下方式链接的问题的帮助下完成

{{ asset(path('route',{'param1':'value'})) }}

如果你需要处理多个CDN域,你可以通过以下方式来完成

app/config.yml

# app/config.yml
#....
templating:       
  engines: ['twig'] 
  packages:
    cdn1:
      base_urls: ["http://cdn1.domain.com"]
    cdn2:
      base_urls: ["http://cdn2.domain.com"]

然后在你的树枝模板文件

{{ asset('path/of/file', 'cdn1')

{{ asset('path/of/file', 'cdn2')

我不知道CDN的内容,但就扩展url功能而言,请看一下:

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);
}

所以你可以在那里获取getUrl,也可以插入你自己的UrlGenerator。不确定在你的具体情况下哪一个更容易。可能会制作自己的UrlGenerator。