我是Twig的新手并寻找以下解决方案(在PHP中非常容易,但是,我们的模板在Twig中设置)
在Twig中编辑一个数组值(使用其索引),以便在循环后输出。
当我尝试按索引编辑数组值时,数组值(使用其索引检索)不会更改。相反,它可以将值附加到数组
...
{% set amount = [0,0,0] %}
{% for invoice in invoices %}
<tr>
<td>{% if invoice.age <= 10 %}{% set amount ?????? %}{% endif %}</td>
<td>{% if invoice.age > 10 and invoice.age <= 20 %}{% set amount ?????? %}{% endif %}</td>
<td>{% if invoice.age > 20 %}{% set amount ?????? %}{% endif %}</td>
</tr>
{% endfor %}
...
{{ amount[0] }}
我已尝试以下操作将age[0]
的值更改为无效。
{% set amount = amount|merge({0: 'test'}) %}
{% set amount = amount|merge({0: 'test'})|keys %}
{% set amount = amount|merge({(0), 'test'}) %}
{% set amount = amount|merge({(0), 'test'})|keys %}
... and many more.
我希望能够在结尾输出{{ age[0] }}
,以显示10岁或以下所有发票的总金额。同样,我还要输出age[1]
和age[2]
来显示所有年龄介于10到20天之间和超过20天的发票的总金额。
答案 0 :(得分:2)
在树枝中,始终保持一切简单,没有硬逻辑。
在您的情况下,只需创建3个变量。
{% set amount_under_10, amount_between_10_and_20, amount_over_20 = 0,0,0 %}
{% for invoice in invoices %}
<tr>
<td>{% if invoice.age <= 10 %}{% set amount_under_10 = amount_under_10 + 1 %}{% endif %}{{ invoice.age }}</td>
<td>{% if invoice.age > 10 and invoice.age <= 20 %}{% set amount_between_10_and_20 = amount_between_10_and_20 + 1 %}{% endif %}{{ invoice.age }}</td>
<td>{% if invoice.age > 20 %}{% set amount_over_20 = amount_over_20 + 1 %}{% endif %}{{ invoice.age }}</td>
</tr>
{% endfor %}
{{ amount_under_10 }}
{{ amount_between_10_and_20 }}
{{ amount_over_20 }}
请参阅fiddle
如果您需要更通用(例如,任意数量的范围),请不要在Twig中执行此操作。 Twig是为渲染信息而制作的,不再是。
答案 1 :(得分:0)
请参阅我的answer here了解其他方法。
我认为我理解将逻辑排除在模板之外的想法,但在我的情况下,我有执行的管理员编写的SQL查询,并且通用模板输出结果。 计算模板中的总计更有意义。