我正在使用一种报价/发票工具,在几个地方,我想显示一个带有摘要的表格:所有报价行,包括价格和小计,总计,增值税...
很明显,我在想一个宏,因为我在多个位置显示了该块,但是我看到作为宏参数给出的变量在宏中进行计算之后并没有更新:
例如:
{% macro computeTotal(total, vat) %}
{% for i in 1..2 %}
{% set total = total + i %}{# would be the sum for total for each item line #}
{% set vat = vat + 0.2*i %}
{% endfor %}
Inside : {{total}}{# displays 3 #}
Inside : {{vat}}{# displays 0.3 #}
{% endmacro %}
{% set total = 0 %}
{% set vat = 0 %}
{{ _self.computeTotal(total,vat) }}
Outside : {{total}} {# displays 0 and not 3 #}
Outside : {{vat}} {# displays 0 and not 0.3 #}
当然,在实际代码中,computeTotal将显示一个表格,其中包含报价/发票的所有行和列
我也考虑过_context变量,但这也不起作用:我也没有:
{% macro computeTotal(variable) %}
{% for i in 1..2 %}
{% set variable.total = variable.total + i %} {# can't do this #}
{% set variable.vat = variable.vat + 0.2*i %}
{% endfor %}
Inside : {{variable.total}}
Inside : {{variable.vat}}
{% endmacro %}
{% set total = 0 %}
{% set vat = 0 %}
{{ _self.computeTotal(_context) }}
最后,我也尝试了一个子模板而不是宏,但是仍然可以进入变量,但不能“退出”(不在include范围之外更新):(
我还能怎么实现呢?