Skip to content
This repository was archived by the owner on Jan 21, 2020. It is now read-only.

Commit 903a098

Browse files
committed
Merge pull request #41 from webimpress/hotfix/default-params-in-layout
Shared default params available in layout
2 parents a32a08a + 1769041 commit 903a098

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

src/ZendViewRenderer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ private function prepareLayout(ModelInterface $viewModel)
339339
if ($layout) {
340340
$layout->addChild($viewModel);
341341
$viewModel = $layout;
342+
$viewModel->setVariables($this->mergeParams(self::TEMPLATE_ALL, []));
342343
}
343344

344345
return $viewModel;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Layout Page: <?= $this->title ?></title>
5+
</head>
6+
<body>
7+
<?= $this->content ?>
8+
</body>

test/ZendViewRendererTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,44 @@ public function testWillRenderContentInLayoutPassedToConstructor()
208208
$this->assertContains('<title>Layout Page</title>', $result, sprintf('Received %s', $result));
209209
}
210210

211+
public function testSharedParameterIsAvailableInLayout()
212+
{
213+
$renderer = new ZendViewRenderer(null, 'zendview-layout-variable');
214+
$renderer->addPath(__DIR__ . '/TestAsset');
215+
$title = uniqid('ZendViewTitle', true);
216+
$renderer->addDefaultParam($renderer::TEMPLATE_ALL, 'title', $title);
217+
218+
$name = uniqid('ZendViewName', true);
219+
$result = $renderer->render('zendview', ['name' => $name]);
220+
221+
$this->assertContains($title, $result);
222+
$this->assertContains($name, $result);
223+
$content = file_get_contents(__DIR__ . '/TestAsset/zendview.phtml');
224+
$content = str_replace('<?php echo $name ?>', $name, $content);
225+
$this->assertContains($content, $result);
226+
$expected = sprintf('<title>Layout Page: %s</title>', $title);
227+
$this->assertContains($expected, $result, sprintf('Received %s', $result));
228+
}
229+
230+
public function testTemplateDefaultParameterIsNotAvailableInLayout()
231+
{
232+
$renderer = new ZendViewRenderer(null, 'zendview-layout-variable');
233+
$renderer->addPath(__DIR__ . '/TestAsset');
234+
$title = uniqid('ZendViewTitle', true);
235+
$renderer->addDefaultParam('zendview', 'title', $title);
236+
237+
$name = uniqid('ZendViewName', true);
238+
$result = $renderer->render('zendview', ['name' => $name]);
239+
240+
$this->assertNotContains($title, $result);
241+
$this->assertContains($name, $result);
242+
$content = file_get_contents(__DIR__ . '/TestAsset/zendview.phtml');
243+
$content = str_replace('<?php echo $name ?>', $name, $content);
244+
$this->assertContains($content, $result);
245+
$expected = sprintf('<title>Layout Page: %s</title>', '');
246+
$this->assertContains($expected, $result, sprintf('Received %s', $result));
247+
}
248+
211249
/**
212250
* @group layout
213251
*/

0 commit comments

Comments
 (0)