From c04d077e4ff950c2f73040ec29f1cc802dab7ae5 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Fri, 18 Nov 2016 18:16:19 +0100 Subject: [PATCH] Bugfix: When rendering blocks of other templates, don't pass the local blocks array. --- lib/Twig/Node/Expression/BlockReference.php | 26 ++++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/Twig/Node/Expression/BlockReference.php b/lib/Twig/Node/Expression/BlockReference.php index 0dc533202..8aeea2808 100644 --- a/lib/Twig/Node/Expression/BlockReference.php +++ b/lib/Twig/Node/Expression/BlockReference.php @@ -50,17 +50,17 @@ class Twig_Node_Expression_BlockReference extends Twig_Node_Expression $this ->compileTemplateCall($compiler) - ->raw('->displayBlock(') - ->subcompile($this->getNode('name')) - ->raw(", \$context, \$blocks);\n") + ->raw('->displayBlock') ; + $this + ->compileBlockArguments($compiler) + ->raw(";\n"); } else { $this ->compileTemplateCall($compiler) - ->raw('->renderBlock(') - ->subcompile($this->getNode('name')) - ->raw(', $context, $blocks)') + ->raw('->renderBlock') ; + $this->compileBlockArguments($compiler); } } } @@ -81,4 +81,18 @@ class Twig_Node_Expression_BlockReference extends Twig_Node_Expression ->raw(')') ; } + + private function compileBlockArguments(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('name')) + ->raw(', $context'); + + if (!$this->hasNode('template')) { + $compiler->raw(', $blocks'); + } + + return $compiler->raw(')'); + } }