/** * * @param ViewModel $viewModel */ private function extractCacheTags(ViewModel $viewModel) { if ($viewModel->getOption('esi') && !$viewModel->terminate()) { return; } $tags = (array) $viewModel->getOption(self::OPTION_CACHE_TAGS, []); $this->cacheTags = ArrayUtils::merge($this->cacheTags, $tags); if ($viewModel->hasChildren()) { foreach ($viewModel->getChildren() as $childViewModel) { $this->extractCacheTags($childViewModel); } } }
public function testAddChildAllowsSpecifyingCaptureToValue() { $model = new ViewModel(); $child = new ViewModel(); $model->addChild($child, 'foo'); $this->assertTrue($model->hasChildren()); $this->assertEquals('foo', $child->captureTo()); }
/** * Renders template childrens. * Inspired on Zend\View\View implementation to recursively render child models * @param ViewModel $model * @see Zend\View\View::renderChildren */ protected function renderChildren(ViewModel $model) { if (!$model->hasChildren()) { return; } /* @var ViewModel $child */ foreach ($model as $child) { $capture = $child->captureTo(); if (!empty($capture)) { // Recursively render children $this->renderChildren($child); $result = $this->renderer->render($child); if ($child->isAppend()) { $oldResult = $model->{$capture}; $model->setVariable($capture, $oldResult . $result); } else { $model->setVariable($capture, $result); } } } }
/** * * @param string|ViewModel $nameOrModel * @param mixed $values * @return string * @throws DomainException */ public function renderStrategyExtend($nameOrModel, $values = null) { $model = null; if ($nameOrModel->hasChildren()) { foreach ($nameOrModel as $child) { if ($child->captureTo() == 'content') { $model = $child; break; } } } if (!$model) { $model = $nameOrModel; } $template = $this->resolver->resolve($model->getTemplate(), $this); return $template->render((array) $model->getVariables()); }