Я пытаюсь получить доступ к одной из переменных ветки в макросе. Я знаю, что не могу сделать это напрямую.
как и в функциях PHP, макросы не имеют доступа к текущим переменным шаблона
но одно и то же состояние страницы:
Вы можете передать весь контекст в качестве аргумента, используя специальную переменную _context.
Каков синтаксис передачи _context в макрос и для доступа к нему в макросе?
благодаря
Рассмотрим следующий пример:
1) Создайте переменную в текущем контексте
{% set x = 42 %}
2) Объявить макрос, который принимает объект как параметр
{% macro test(variables) %} variable x = {{ variables.x | default('undefined') }} {% endmacro %}
3) Вызовите свой макрос, со специальным _context
объектом
{{ _self.test(_context) }}
Это отобразит:
переменная x = 42
Вы также можете использовать свойство varargs макроса (h иy, если вы не хотите оговаривать параметр в макросе ):
Я предполагаю, что у вас есть несколько твиговых варов, оговоренных в вашем шаблоне.
{%set bodyType = "skinny" %}
С любым макросом ветки вы передаете _context в качестве последнего аргумента .
{{ _self.MyAmazaingMacroThatDoesEverything("french fries",_context)
в макросе:
{% macro MyAmazaingMacroThatDoesEverything(healthyFood) %} variable yourTwigPageVar = {{ varargs[0].bodyType | default('undefined') }} <h1>I like {{healthyFood}}, eating them that makes me {{yourTwigPageVar}}</h2> {% endmacro %}