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

Commit 5837699

Browse files
committed
Allow default parameters to be rendered in layout
1 parent ea90428 commit 5837699

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/ZendViewRenderer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ private function prepareLayout(ModelInterface $viewModel)
342342
if ($layout) {
343343
$layout->addChild($viewModel);
344344
$viewModel = $layout;
345-
$viewModel->setVariables($this->mergeParams(self::TEMPLATE_ALL, []));
345+
$viewModel->setVariables($this->mergeParams($layout->getTemplate(), []));
346346
}
347347

348348
return $viewModel;

test/ZendViewRendererTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,28 @@ public function testTemplateDefaultParameterIsNotAvailableInLayout()
246246
$this->assertContains($expected, $result, sprintf('Received %s', $result));
247247
}
248248

249+
public function testTemplateDefaultParameterIsAvailableInLayout()
250+
{
251+
$renderer = new ZendViewRenderer(null, 'zendview-layout-variable');
252+
$renderer->addPath(__DIR__ . '/TestAsset');
253+
$title = uniqid('ZendViewTitle', true);
254+
$name = uniqid('ZendViewName', true);
255+
$renderer->addDefaultParam('zendview-layout-variable', 'title', $title);
256+
$result = $renderer->render('zendview', ['name' => $name]);
257+
$this->assertContains($title, $result);
258+
$this->assertContains($name, $result);
259+
260+
$content = file_get_contents(__DIR__ . '/TestAsset/zendview.phtml');
261+
$content = str_replace('<?php echo $name ?>', $name, $content);
262+
$layout = file_get_contents(__DIR__ . '/TestAsset/zendview-layout-variable.phtml');
263+
$layout = str_replace('<?= $this->title ?>', $title, $layout);
264+
$layout = str_replace('<?= $this->content ?>' . PHP_EOL, $content, $layout);
265+
$this->assertContains($layout, $result);
266+
267+
$expected = sprintf('<title>Layout Page: %s</title>', $title);
268+
$this->assertContains($expected, $result, sprintf('Received %s', $result));
269+
}
270+
249271
/**
250272
* @group layout
251273
*/

0 commit comments

Comments
 (0)