diff --git a/src/Bridges/ApplicationLatte/UIMacros.php b/src/Bridges/ApplicationLatte/UIMacros.php index ca54a180b..4318dee29 100644 --- a/src/Bridges/ApplicationLatte/UIMacros.php +++ b/src/Bridges/ApplicationLatte/UIMacros.php @@ -47,7 +47,7 @@ public function finalize() { $prolog = ' // snippets support -if (empty($_l->extends) && !empty($_control->snippetMode)) { +if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) { return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars()); }'; return [$prolog, '']; diff --git a/tests/Bridges.Latte/UIMacros.renderSnippets4.phpt b/tests/Bridges.Latte/UIMacros.renderSnippets4.phpt new file mode 100644 index 000000000..658034348 --- /dev/null +++ b/tests/Bridges.Latte/UIMacros.renderSnippets4.phpt @@ -0,0 +1,35 @@ +getCompiler()); + $params['_control'] = $this; + $latte->render(__DIR__ . '/templates/snippets.includeblock.latte', $params); + } +} + + +$presenter = new TestPresenter; +$presenter->snippetMode = TRUE; +$presenter->redrawControl(); +$presenter->render(); +Assert::same([ + 'snippets' => [ + 'snippet--test' => 'bar', + ], +], (array) $presenter->payload); diff --git a/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.alt.phtml b/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.alt.phtml index 72550df6b..474742cb2 100644 --- a/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.alt.phtml +++ b/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.alt.phtml @@ -41,7 +41,7 @@ if ($_l->extends) { ob_start(function () {});} // prolog Nette\Bridges\ApplicationLatte\UIMacros // snippets support -if (empty($_l->extends) && !empty($_control->snippetMode)) { +if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) { return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars()); } diff --git a/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.phtml b/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.phtml index 564b8da45..867146d78 100644 --- a/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.phtml +++ b/tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.phtml @@ -31,7 +31,7 @@ if ($_l->extends) { ob_start(function () {});} // prolog Nette\Bridges\ApplicationLatte\UIMacros // snippets support -if (empty($_l->extends) && !empty($_control->snippetMode)) { +if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) { return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars()); } diff --git a/tests/Bridges.Latte/expected/UIMacros.snippet.alt.phtml b/tests/Bridges.Latte/expected/UIMacros.snippet.alt.phtml index 98e55fdde..1b2eb07c2 100644 --- a/tests/Bridges.Latte/expected/UIMacros.snippet.alt.phtml +++ b/tests/Bridges.Latte/expected/UIMacros.snippet.alt.phtml @@ -38,7 +38,7 @@ if ($_l->extends) { ob_start(function () {});} // prolog Nette\Bridges\ApplicationLatte\UIMacros // snippets support -if (empty($_l->extends) && !empty($_control->snippetMode)) { +if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) { return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars()); } diff --git a/tests/Bridges.Latte/templates/snippets.includeblock.latte b/tests/Bridges.Latte/templates/snippets.includeblock.latte new file mode 100644 index 000000000..769d447ca --- /dev/null +++ b/tests/Bridges.Latte/templates/snippets.includeblock.latte @@ -0,0 +1,6 @@ +{extends "snippets.includeblock.layout.latte"} +{includeblock "snippets.includeblock.sub.latte"} +{includeblock "snippets.includeblock.sub2.latte"} +{snippet test} +{include #bar} +{/snippet} diff --git a/tests/Bridges.Latte/templates/snippets.includeblock.layout.latte b/tests/Bridges.Latte/templates/snippets.includeblock.layout.latte new file mode 100644 index 000000000..e69de29bb diff --git a/tests/Bridges.Latte/templates/snippets.includeblock.sub.latte b/tests/Bridges.Latte/templates/snippets.includeblock.sub.latte new file mode 100644 index 000000000..e69de29bb diff --git a/tests/Bridges.Latte/templates/snippets.includeblock.sub2.latte b/tests/Bridges.Latte/templates/snippets.includeblock.sub2.latte new file mode 100644 index 000000000..81a9df231 --- /dev/null +++ b/tests/Bridges.Latte/templates/snippets.includeblock.sub2.latte @@ -0,0 +1 @@ +{block bar}bar{/block}