我正在尝试访问宏中的一个twig变量。我知道我不能直接这样做。
与PHP函数一样,宏无法访问当前模板变量
但同一页面状态:
您可以使用特殊的_context变量将整个上下文作为参数传递。
将_context传递给宏以及在宏中访问它的语法是什么?
感谢
答案 0 :(得分:12)
考虑以下示例:
1)在当前上下文中创建变量
{% set x = 42 %}
2)声明一个将对象作为参数
的宏{% macro test(variables) %}
variable x = {{ variables.x | default('undefined') }}
{% endmacro %}
3)使用特殊的_context
对象
{{ _self.test(_context) }}
这将显示:
变量x = 42
答案 1 :(得分:1)
您还可以使用宏的varargs属性(如果您不想在宏中规定参数,则h andy):
我假设你的模板中有一些树枝vars。
{%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 %}