Is it possible to retrieve all variables inside a Twig template with PHP?
Example someTemplate.twig.php:
Hello {{ name }}, your new email is {{ email }}
Now I want to do something like this:
$template = $twig->loadTemplate('someTemplate'); $variables = $template->getVariables();
$variables should now contain "name" and "email".
The reason I want to do this is that I am working on a CMS system where my twig templates and variables are dynamically set by my users and they also fill the variables through an API.
I want to set default values to not-set variables and therefore I need a list of all variables that exist inside the template…
In Twig templates variables can be accessed using double curly braces notation {{ variableName }} .
Printing variables using Kint in Twig To print a variables, just add {{ kint() }} into the template and pass a variable in, for example, {{ kint(page) }}.
From the official Twig documentation: "Macros are comparable with functions in regular programming languages. They are useful to put often used HTML idioms into reusable elements to not repeat yourself."
This is useful I find to get all the top-level keys available in the current context:
<ol> {% for key, value in _context %} <li>{{ key }}</li> {% endfor %} </ol>
Thanks to https://www.drupal.org/node/1906780
UPDATE 2019
Although {{ dump() }}
does work, in some circumstances it may result in a "memory exhausted" error from PHP if it generates too much information (for example, due to recursion). In this case, try {{ dump(_context|keys) }}
to get a list of the defined variables by name without dumping their contents.
UPDATE 2017
It is possible by using {{ dump() }}
filter. Thanks for pointing that out in the comments!
OUTDATED
It is not possible.
You can look for these variable in twig templates and add |default('your_value')
filter to them. It will check if variable is defined and is not empty, and if no - will replace it with your value.
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