Я работаю над инструментом цитаты / счета-фактуры, и в нескольких местах я хочу отобразить таблицу со сводкой: все строки цитаты с ценой и подытогом, итого, НДС ...
Очевидно,Я думал о макросе, так как я отображаю блок в нескольких местах, но я вижу, что переменные, заданные как параметры макроса, не обновляются после вычислений внутри макроса:
, например:
{% 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): (
Как еще можно добиться этого?