6

我正在 Twig 中运行一个循环:

{% for item in items %}
<div class="description">
   Title: {{ item.name }}<br />
   Price: {{ item.price }}
</div>
{% else %}
<p>...</p>
{% endfor %}

如果 item.price 为空,则会引发异常。当某个值为空时,我不能简单地强制 Twig 给出“无”吗?

或者我是否总是需要 {% if item.x %}{{ item.x }}{% endif %} 来获取所有值?

4

4 回答 4

13

您也可以尝试default过滤器

{{ item.price|default("nothing") }}
于 2011-10-24T20:37:33.073 回答
12

转到 config.yml 并在那里设置以下内容:

twig:
    strict_variables: false
于 2011-10-30T17:39:14.430 回答
5
{% if item.price is defined and item.price not in [''] %}
    {{ item.price }}
{% endif %}

应该做的伎俩,或者至少我过去是这样处理的。虽然我不是 Twig 专家 :)

于 2011-10-24T17:17:13.147 回答
2

这是我针对这种情况的最短版本:

{{ item.price|default }}

default-filter 的默认值为FALSE,因此它不会输出任何内容并且不会引发异常。

于 2014-10-22T14:08:37.830 回答