Skip to content

Commit d47e06c

Browse files
matej21dg
authored andcommitted
SnippetBridge: added setSnippetMode; added snippet test (#150)
1 parent 82330d4 commit d47e06c

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"nette/forms": "~2.4",
3131
"nette/robot-loader": "~2.4",
3232
"nette/security": "~2.4",
33-
"latte/latte": "~2.4",
33+
"latte/latte": "^2.4.1",
3434
"tracy/tracy": "^2.4"
3535
},
3636
"conflict": {

src/Bridges/ApplicationLatte/SnippetBridge.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ public function isSnippetMode()
3939
}
4040

4141

42+
public function setSnippetMode($snippetMode)
43+
{
44+
$this->control->snippetMode = $snippetMode;
45+
}
46+
47+
4248
public function needsRedraw($name)
4349
{
4450
return $this->control->isControlInvalid($name);
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
/**
4+
* Test: UIMacros, renderSnippets and template rendered from another template
5+
*/
6+
7+
use Nette\Bridges\ApplicationLatte\UIMacros;
8+
use Nette\Bridges\ApplicationLatte\SnippetBridge;
9+
use Tester\Assert;
10+
11+
12+
require __DIR__ . '/../bootstrap.php';
13+
14+
15+
16+
class TestPresenter extends Nette\Application\UI\Presenter
17+
{
18+
19+
public function render()
20+
{
21+
$latte = new Latte\Engine;
22+
$latte->setLoader(new Latte\Loaders\StringLoader);
23+
UIMacros::install($latte->getCompiler());
24+
$latte->addProvider('uiControl', $this);
25+
$latte->addProvider('snippetBridge', new SnippetBridge($this));
26+
$latte->render('{snippet foo}{php $presenter->renderFoo()}{/snippet}', ['presenter' => $this]);
27+
}
28+
29+
public function renderFoo()
30+
{
31+
$latte = new Latte\Engine;
32+
$latte->setLoader(new Latte\Loaders\StringLoader);
33+
UIMacros::install($latte->getCompiler());
34+
$latte->addProvider('uiControl', $this);
35+
$latte->addProvider('snippetBridge', new SnippetBridge($this));
36+
$latte->render('Hello');
37+
}
38+
}
39+
40+
41+
$presenter = new TestPresenter;
42+
$presenter->snippetMode = TRUE;
43+
$presenter->redrawControl('foo');
44+
$presenter->render();
45+
Assert::same([
46+
'snippets' => [
47+
'snippet--foo' => 'Hello',
48+
],
49+
], (array) $presenter->payload);

0 commit comments

Comments
 (0)