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…
The way I do it is
And then I just check my console using DevTools
I built a Twig2Schema class to infer variables from a Twig AST. To get the variables in a document, you need to recursively "walk" through the Twig AST and have rules in place when you encounter certain types of language nodes.
This class extracts variable names from Nodes if they are not always defined, and also grabs variables from the value used in ForLoopNodes and IfStatements.
To use it, you can either call
infer
for the whole template, or a subset of the tree usinginferFromAst
.