Как получить доступ к переменной _context в макросе в TWIG?

Я пытаюсь получить доступ к одной из переменных ветки в макросе. Я знаю, что не могу сделать это напрямую.

как и в функциях 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, если вы не хотите оговаривать параметр в макросе ):

  1. Я предполагаю, что у вас есть несколько твиговых варов, оговоренных в вашем шаблоне.

      {%set bodyType = "skinny" %} 
  2. С любым макросом ветки вы передаете _context в качестве последнего аргумента .

      {{ _self.MyAmazaingMacroThatDoesEverything("french fries",_context) 
  3. в макросе:

      {% macro MyAmazaingMacroThatDoesEverything(healthyFood) %} variable yourTwigPageVar = {{ varargs[0].bodyType | default('undefined') }} <h1>I like {{healthyFood}}, eating them that makes me {{yourTwigPageVar}}</h2> {% endmacro %}