Skip to content

Commit 461ec69

Browse files
committed
Merge pull request #27 from matej21/fix/snippets_includeblock
Snippets: do not render snippets from template which is included using includeblock macro
2 parents e912f44 + 29c5be3 commit 461ec69

File tree

9 files changed

+46
-4
lines changed

9 files changed

+46
-4
lines changed

src/Bridges/ApplicationLatte/UIMacros.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public function finalize()
4747
{
4848
$prolog = '
4949
// snippets support
50-
if (empty($_l->extends) && !empty($_control->snippetMode)) {
50+
if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) {
5151
return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars());
5252
}';
5353
return [$prolog, ''];
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
/**
4+
* Test: UIMacros and renderSnippets with blocks included using includeblock
5+
*/
6+
7+
use Nette\Bridges\ApplicationLatte\UIMacros;
8+
use Tester\Assert;
9+
10+
11+
require __DIR__ . '/../bootstrap.php';
12+
13+
14+
class TestPresenter extends Nette\Application\UI\Presenter
15+
{
16+
17+
public function render()
18+
{
19+
$latte = new Latte\Engine;
20+
UIMacros::install($latte->getCompiler());
21+
$params['_control'] = $this;
22+
$latte->render(__DIR__ . '/templates/snippets.includeblock.latte', $params);
23+
}
24+
}
25+
26+
27+
$presenter = new TestPresenter;
28+
$presenter->snippetMode = TRUE;
29+
$presenter->redrawControl();
30+
$presenter->render();
31+
Assert::same([
32+
'snippets' => [
33+
'snippet--test' => 'bar',
34+
],
35+
], (array) $presenter->payload);

tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.alt.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ if ($_l->extends) { ob_start(function () {});}
4141
// prolog Nette\Bridges\ApplicationLatte\UIMacros
4242

4343
// snippets support
44-
if (empty($_l->extends) && !empty($_control->snippetMode)) {
44+
if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) {
4545
return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars());
4646
}
4747

tests/Bridges.Latte/expected/UIMacros.dynamicsnippets.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ if ($_l->extends) { ob_start(function () {});}
3131
// prolog Nette\Bridges\ApplicationLatte\UIMacros
3232

3333
// snippets support
34-
if (empty($_l->extends) && !empty($_control->snippetMode)) {
34+
if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) {
3535
return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars());
3636
}
3737

tests/Bridges.Latte/expected/UIMacros.snippet.alt.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ if ($_l->extends) { ob_start(function () {});}
3838
// prolog Nette\Bridges\ApplicationLatte\UIMacros
3939

4040
// snippets support
41-
if (empty($_l->extends) && !empty($_control->snippetMode)) {
41+
if (empty($_l->extends) && !empty($_control->snippetMode) && empty($_g->includingBlock)) {
4242
return Nette\Bridges\ApplicationLatte\UIRuntime::renderSnippets($_control, $_b, get_defined_vars());
4343
}
4444

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{extends "snippets.includeblock.layout.latte"}
2+
{includeblock "snippets.includeblock.sub.latte"}
3+
{includeblock "snippets.includeblock.sub2.latte"}
4+
{snippet test}
5+
{include #bar}
6+
{/snippet}

tests/Bridges.Latte/templates/snippets.includeblock.layout.latte

Whitespace-only changes.

tests/Bridges.Latte/templates/snippets.includeblock.sub.latte

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{block bar}bar{/block}

0 commit comments

Comments
 (0)