File tree Expand file tree Collapse file tree
src/Bridges/ApplicationLatte Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -21,6 +21,9 @@ class TemplateFactory implements UI\ITemplateFactory
2121{
2222 use Nette \SmartObject;
2323
24+ /** @var callable[] function (Template $template); Occurs when a new template is created */
25+ public $ onCreate ;
26+
2427 /** @var ILatteFactory */
2528 private $ latteFactory ;
2629
@@ -126,6 +129,8 @@ public function createTemplate(UI\Control $control = null): UI\ITemplate
126129 $ template ->flashes = (array ) $ presenter ->getFlashSession ()->$ id ;
127130 }
128131
132+ $ this ->onCreate ($ template );
133+
129134 return $ template ;
130135 }
131136}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ /**
4+ * Test: TemplateFactory in Bridge properly handles TemplateFactory::onCreate
5+ */
6+
7+ declare (strict_types=1 );
8+
9+ use Nette \Bridges \ApplicationLatte \ILatteFactory ;
10+ use Nette \Bridges \ApplicationLatte \Template ;
11+ use Nette \Bridges \ApplicationLatte \TemplateFactory ;
12+ use Nette \Http ;
13+ use Tester \Assert ;
14+
15+
16+ require __DIR__ . '/../bootstrap.php ' ;
17+
18+
19+ test (function () {
20+ $ engine = new Latte \Engine ;
21+ $ latteFactory = Mockery::mock (ILatteFactory::class);
22+ $ latteFactory ->shouldReceive ('create ' )->andReturn ($ engine );
23+ $ factory = new TemplateFactory ($ latteFactory , new Http \Request (new Http \UrlScript ('http://nette.org ' )));
24+ $ factory ->onCreate [] = $ callback = function (Template $ template ) {
25+ $ template ->add ('foo ' , 'bar ' );
26+ };
27+
28+ $ template = $ factory ->createTemplate ();
29+
30+ Assert::type ('array ' , $ factory ->onCreate );
31+ Assert::same ($ callback , $ factory ->onCreate [0 ]); // our callback
32+ Assert::equal ('bar ' , $ template ->foo );
33+ });
You can’t perform that action at this time.
0 commit comments