How do I access the _context variable within a macro in TWIG?

You could also use the varargs property of the macro (handy if you don't want to stipulate a parameter in the macro):

  1. I assume you have a few twig vars stipulated in your template.

       {%set bodyType = "skinny" %}
    
  2. With any twig macro you pass in the _context as the final argument.

      {{ _self.MyAmazaingMacroThatDoesEverything("french fries",_context)
    
  3. in the macro:

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

Consider the following example:

1) Create a variable in the current context

{% set x = 42 %}

2) Declare a macro that takes an object as parameter

{% macro test(variables) %}
   variable x = {{ variables.x | default('undefined') }}
{% endmacro %}

3) Call your macro, with the special _context object

{{ _self.test(_context) }}

This will display:

variable x = 42

Tags:

Php

Macros

Twig