I'm trying to access one of my twig variables in a macro. I know I can't do this directly.
as with PHP functions, macros don't have access to the current template variables
but the same page state:
You can pass the whole context as an argument by using the special _context variable.
What's the syntax for passing _context to the macro, and for accessing it within the macro?
thanks
Twig allows you to put the name of the macro after the end tag for better readability (the name after the endmacro word must match the macro name):
Unfortunately, PHP does not have any kind of macros. You could implement these yourself by running a command line tool like sed over some input to insert macros, but that is error prone and a bit sloppy. To do what you want to do, you might consider the debug_backtrace function.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With