class TwigNodeVisitor in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Template/TwigNodeVisitor.php \Drupal\Core\Template\TwigNodeVisitor
Provides a Twig_NodeVisitor to change the generated parse-tree.
This is used to ensure that everything printed is wrapped via the TwigExtension->renderVar() function in order to just write {{ content }} in templates instead of having to write {{ render_var(content) }}.
Hierarchy
- class \Drupal\Core\Template\TwigNodeVisitor extends \Drupal\Core\Template\Twig_BaseNodeVisitor
Expanded class hierarchy of TwigNodeVisitor
See also
twig_render
File
- core/
lib/ Drupal/ Core/ Template/ TwigNodeVisitor.php, line 19 - Contains \Drupal\Core\Template\TwigNodeVisitor.
Namespace
Drupal\Core\TemplateView source
class TwigNodeVisitor extends \Twig_BaseNodeVisitor {
/**
* {@inheritdoc}
*/
protected function doEnterNode(\Twig_Node $node, \Twig_Environment $env) {
return $node;
}
/**
* {@inheritdoc}
*/
protected function doLeaveNode(\Twig_Node $node, \Twig_Environment $env) {
// We use this to inject a call to render_var -> TwigExtension->renderVar()
// before anything is printed.
if ($node instanceof \Twig_Node_Print) {
if (!empty($this->skipRenderVarFunction)) {
// No need to add the callback, we have escape active already.
unset($this->skipRenderVarFunction);
return $node;
}
$class = get_class($node);
$line = $node
->getLine();
return new $class(new \Twig_Node_Expression_Function('render_var', new \Twig_Node(array(
$node
->getNode('expr'),
)), $line), $line);
}
else {
if ($node instanceof \Twig_Node_Expression_Filter) {
$name = $node
->getNode('filter')
->getAttribute('value');
if ('escape' == $name || 'e' == $name) {
// Use our own escape filter that is SafeMarkup aware.
$node
->getNode('filter')
->setAttribute('value', 'drupal_escape');
// Store that we have a filter active already that knows how to deal with render arrays.
$this->skipRenderVarFunction = TRUE;
}
}
}
return $node;
}
/**
* {@inheritdoc}
*/
public function getPriority() {
// Just above the Optimizer, which is the normal last one.
return 256;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
TwigNodeVisitor:: |
protected | function | ||
TwigNodeVisitor:: |
protected | function | ||
TwigNodeVisitor:: |
public | function |