Twig:更新宏/子模板中的变量

时间:2018-12-28 09:32:51

标签: templates macros twig

我正在使用一种报价/发票工具,在几个地方,我想显示一个带有摘要的表格:所有报价行,包括价格和小计,总计,增值税...

很明显,我在想一个宏,因为我在多个位置显示了该块,但是我看到作为宏参数给出的变量在宏中进行计算之后并没有更新:

例如:

{% 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范围之外更新):(

我还能怎么实现呢?

0 个答案:

没有答案