如何在TWIG中访问宏中的_context变量?

时间:2013-12-04 04:57:30

标签: php macros twig

我正在尝试访问宏中的一个twig变量。我知道我不能直接这样做。

  

与PHP函数一样,宏无法访问当前模板变量

但同一页面状态:

  

您可以使用特殊的_context变量将整个上下文作为参数传递。

将_context传递给宏以及在宏中访问它的语法是什么?

感谢

2 个答案:

答案 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):

  1. 我假设你的模板中有一些树枝vars。

       {%set bodyType = "skinny" %}
    
  2. 使用任何树枝宏,您将 _context 作为最终参数传递。

      {{ _self.MyAmazaingMacroThatDoesEverything("french fries",_context)
    
  3. 宏中的
  4.   {% macro MyAmazaingMacroThatDoesEverything(healthyFood) %}
           variable yourTwigPageVar = {{ varargs[0].bodyType | default('undefined') }}
    
           <h1>I like {{healthyFood}}, eating them that makes me {{yourTwigPageVar}}</h2>
    
    
      {% endmacro %}