3

我正在使用 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" />

正如您在第一个循环中看到的那样..有些继承了base_url ..有些没有..我已经清除了所有缓存..完成了所有常规调试步骤..为什么不这样做是没有意义的持续的。

4

1 回答 1

4

您可以切换到urltwig 函数,它与此相同,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

于 2012-07-10T21:50:33.273 回答