我搜索了很多但找不到解决方案来实现这个目标:
{% for i in 1..6 %}
<li>
{% image '@MyBundle/Resources/public/images/college/demo/facilities/thumbs/laboratory/'~i~'.jpg' %}
<img class="facThumb" src="{{ asset_url }}" alt="Facilitiy"/>
{% endimage %}
</li>
{% endfor %}
图像名称应该是动态的。请帮忙。
以上代码抛出错误:
值为“〜”的意外标记“operator”
解决方案:
根据@Nic发布的内容(接受的答案),唯一的解决方法似乎是:
{% for i in 1..6 %}
<li>
<img src="{{ asset('bundles/digicreekil/images/college/demo/facilities/thumbs/laboratory/t'~i~'.jpg') }}" alt='demo'/>
</li>
{% endfor %}
答案 0 :(得分:5)
您不能在Assetic中使用变量(因此也不能在{% image %}
标记中使用)。
根据{{3}}(Assetic的创建者)的说法,原因是:
(...)Assetic需要能够解析Twig模板并提取在那里定义的任何资产。如果在标记中使用变量,则无法进行此操作。
Kris Wallsmith补充道:
为此使用CLI命令时会转储资产,而不是在呈现页面时。所以你不能使用变量,因为你没有它们的值。
有关完整的对话,请参阅Christophe Coevoet。
请记住,Assetic在您运行app/console assetic:dump
时创建并优化资产,而不是在实际呈现页面时。因此,它无法知道任何值,它只能用于静态资产。
因此,如果您想使用动态资产,则必须执行以下操作:
{% for i in 1..6 %}
<li>
<img class="facThumb" src="{{ asset('images/college/demo/facilities/thumbs/laboratory/'~i~'.jpg') }}" alt="Facilitiy"/>
</li>
{% endfor %}
在这种情况下,您可以遍历数字1-6并使用资产URL中的变量,因为您没有使用Assetic,而是使用Twig的asset()
函数。 asset()
只返回资产的完整URL,它不会进行任何优化,因此可以在运行时执行。
但是如果你想使用Assetic的优化和过滤器,你也可以给它静态资产:
<li>
{% image '@MyBundle/Resources/public/images/college/demo/facilities/thumbs/laboratory/1.jpg' %}
<img class="facThumb" src="{{ asset_url }}" alt="Facilitiy"/>
{% endimage %}
</li>
<li>
{% image '@MyBundle/Resources/public/images/college/demo/facilities/thumbs/laboratory/2.jpg' %}
<img class="facThumb" src="{{ asset_url }}" alt="Facilitiy"/>
{% endimage %}
</li>
<li>
{% image '@MyBundle/Resources/public/images/college/demo/facilities/thumbs/laboratory/3.jpg' %}
<img class="facThumb" src="{{ asset_url }}" alt="Facilitiy"/>
{% endimage %}
</li>
(等)
这样,您必须复制相同的代码6次,但它允许您使用Assetic。