function IncludeNode::compile
Overrides Node::compile
File
-
vendor/
twig/ twig/ src/ Node/ IncludeNode.php, line 37
Class
- IncludeNode
- Represents an include node.
Namespace
Twig\NodeCode
public function compile(Compiler $compiler) : void {
$compiler->addDebugInfo($this);
if ($this->getAttribute('ignore_missing')) {
$template = $compiler->getVarName();
$compiler->write("try {\n")
->indent()
->write(\sprintf('$%s = ', $template));
$this->addGetTemplate($compiler, $template);
$compiler->raw(";\n")
->outdent()
->write("} catch (LoaderError \$e) {\n")
->indent()
->write("// ignore missing template\n")
->write(\sprintf("\${$template} = null;\n", $template))
->outdent()
->write("}\n")
->write(\sprintf("if (\$%s) {\n", $template))
->indent()
->write(\sprintf('yield from $%s->unwrap()->yield(', $template));
$this->addTemplateArguments($compiler);
$compiler->raw(");\n")
->outdent()
->write("}\n");
}
else {
$compiler->write('yield from ');
$this->addGetTemplate($compiler);
$compiler->raw('->unwrap()->yield(');
$this->addTemplateArguments($compiler);
$compiler->raw(");\n");
}
}