Symfony2 Twig Asset Base_Url不可预测


Symfony2 Twig Asset Base_Url is being Unpredictable?

我正在使用Twig循环为多个图像生成<img src="">。我对这段代码的最终使用是利用框架配置中带有base_url的CDN。

以下是Twig代码:

{% for key, mobj in productmedia.getImages %}
    <img src="{{ asset(path('cropImage', {'filename': mobj.getFilename }),'cdn') }}" />
{% endfor %}
{% for key, mobj in productmedia.getImages %}
  <img src="{{ asset(path('cropImageSm', {'filename': mobj.getFilename }),'cdn') }}" />
{% endfor %}

我希望,至少输出会有一些一致性。。但是看起来SF2有时将使用一个base_url,有时不使用一个。为什么会这样?

以下是输出。

<img src="http://cdn.cloudfront.net/cri/1/matt-skydiving.SH340_SW340.jpg" />
<img src="/cri/1/Swimming.SH340_SW340.jpg" />
<img src="http://cdn.cloudfront.net/cri/1/successman2.SH340_SW340.jpg" />
<img src="/cri/1/matt-skydiving.SH40_SW40.jpg" />
<img src="http://cdn.cloudfront.net/cri/1/Swimming.SH40_SW40.jpg" />
<img src="http://cdn.cloudfront.net/cri/1/successman2.SH40_SW40.jpg" />

正如你在第一个循环中看到的。。有些继承了baseurl。。有些人没有。。我已清除所有缓存。。完成了所有常规调试步骤。。为什么这不一致是没有道理的。

您可以切换到url分支函数,它与path相同,但此函数始终返回一个绝对url:

url('cropImageSm', {'filename': mobj.getFilename })

进一步参考:

Asset()将使用config.yml 中提供的主机

framework:
    templating:
        packages:
            {althostname}:
                base_urls:  { http: ["http://www.domain2.com"], ssl: "/"] }

因此{{ asset(path('route1', {'page': 1 }),'althostname') }}将输出。。http://www.domain2.com/route1/page/1