diff --git a/src/Fenom/Compiler.php b/src/Fenom/Compiler.php index 0fe0c30..9e0344a 100644 --- a/src/Fenom/Compiler.php +++ b/src/Fenom/Compiler.php @@ -517,6 +517,7 @@ class Compiler $t->_extended = true; $tpl->addDepend($t); $t->_compatible = & $tpl->_compatible; + $t->macros = & $tpl->macros; $t->blocks = & $tpl->blocks; $t->compile(); if ($t->uses) { diff --git a/src/Fenom/Template.php b/src/Fenom/Template.php index fe6f025..4803063 100644 --- a/src/Fenom/Template.php +++ b/src/Fenom/Template.php @@ -1254,6 +1254,7 @@ class Template extends Render $macro = false; if (isset($this->macros[$name])) { $macro = $this->macros[$name]; + $recursive = $macro['recursive']; } else { foreach ($this->_stack as $scope) { if ($scope->name == 'macro' && $scope['name'] == $name) { // invoke recursive @@ -1280,8 +1281,10 @@ class Template extends Render } $n = sprintf('%u_%d', crc32($this->_name), $this->i++); if ($recursive) { - $recursive['recursive'] = true; $body = '$tpl->getMacro("' . $name . '")->__invoke($tpl);'; + if($recursive instanceof Scope) { + $recursive['recursive'] = true; + } } else { $body = '?>' . $macro["body"] . '