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…
Advertisement
Answer
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.