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

Jus*_*inP 9 php cdn symfony twig

这个stackoverflow解决方案几乎回答了我的问题.但我想生成CDN网址Twig而不仅仅是资源.我想为动态内容生成它们.因此,我不认为Assetic调整是正确的领域.

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

如果,有没有一个解决方案已经-我将如何开始扩展{{ url() }}功能,这样我可以用它喜欢pathurl.

Mun*_*Das 24

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

{{ asset(path('route',{'param1':'value'})) }}
Run Code Online (Sandbox Code Playgroud)

如果您需要处理多个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"]
Run Code Online (Sandbox Code Playgroud)

然后在你的twig模板文件中

{{ asset('path/of/file', 'cdn1')
Run Code Online (Sandbox Code Playgroud)

要么

{{ asset('path/of/file', 'cdn2')
Run Code Online (Sandbox Code Playgroud)


Cer*_*rad 6

我不知道CDN的东西,但就扩展url功能,请看看:

Symfony的\桥\嫩枝\延期\ 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);
}
Run Code Online (Sandbox Code Playgroud)

所以你可以在那里获得getUrl,或者你可以插入自己的UrlGenerator.不确定在特定情况下哪个更容易.可能会制作自己的UrlGenerator.