我正在使用Twig循环为多个图像生成<img src="">
。我最终使用此代码是为了利用Framework配置中带有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" />
正如你在第一个循环中看到的那样...有些继承了base_url ..而有些则没有..我已经清除了所有缓存..完成了所有常规调试步骤..这没有意义为什么这个不一致。
答案 0 :(得分:4)
您可以切换到url
twig函数,它与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