public function testThrowExceptionIfTemplateNotFound() { $this->setExpectedException(RuntimeException::class); $viewModel = new ResourceViewModel(['foo' => 'bar'], ['template' => 'bar']); $viewModelHelper = $this->getMock(ViewModelHelper::class, [], [], '', false); $viewModelHelper->expects($this->at(0))->method('getCurrent')->willReturn($viewModel); $helperPluginManager = $this->getMock(HelperPluginManager::class, [], [], '', false); $helperPluginManager->expects($this->any())->method('get')->with('viewModel')->will($this->returnValue($viewModelHelper)); $this->resolver->expects($this->once())->method('resolve')->with('bar')->will($this->returnValue(false)); $resourceRenderer = new ResourceRenderer($this->resolver, $helperPluginManager); $resourceRenderer->render($viewModel); }
/** * Detect if we should use the ResourceRenderer based on model type * * @internal * @param ViewEvent $event * @return ResourceRenderer|null */ public function selectRenderer(ViewEvent $event) { if (!$event->getModel() instanceof ResourceViewModel) { // no ResourceModel; do nothing return; } /** @var \Zend\View\HelperPluginManager $helperPluginManager */ $helperPluginManager = $this->renderer->getHelperPluginManager(); $helperPluginManager->setRenderer($this->renderer); // If we have a ResourceViewModel, we set it as the "root" view model in the view model helper. This allows // to differentiate between a nested context or not, in the view /** @var \Zend\View\Helper\ViewModel $viewModelHelper */ $viewModelHelper = $helperPluginManager->get('viewModel'); $viewModel = $event->getModel(); $viewModelHelper->setRoot($viewModel); $viewModelHelper->setCurrent($viewModel); return $this->renderer; }