Twig: Обновить переменные в макросе / подшаблоне - PullRequest
0 голосов
/ 28 декабря 2018

Я работаю над инструментом цитаты / счета-фактуры, и в нескольких местах я хочу отобразить таблицу со сводкой: все строки цитаты с ценой и подытогом, итого, НДС ...

Очевидно,Я думал о макросе, так как я отображаю блок в нескольких местах, но я вижу, что переменные, заданные как параметры макроса, не обновляются после вычислений внутри макроса:

, например:

{% 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): (

Как еще можно добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...