/** * @param ServiceLocatorInterface $sm * @return RendererInterface */ protected function createRenderer(ServiceLocatorInterface $sm) { // Try to return the configured renderer. If it points to an undefined service, create a renderer on the fly $serviceName = $this->mailOptions->getRenderer(); try { $renderer = $sm->get($serviceName); return $renderer; } catch (ServiceNotFoundException $e) { // In case the renderer service is not defined, try to construct it $vmConfig = $this->getSpecificConfig($sm, 'view_manager'); $renderer = new PhpRenderer(); // Check what kind of view_manager configuration has been defined if (isset($vmConfig['template_map']) && isset($vmConfig['template_path_stack'])) { // If both a template_map and a template_path_stack have been defined, create an AggregateResolver $pathStackResolver = new TemplatePathStack(); $pathStackResolver->setPaths($vmConfig['template_path_stack']); $resolver = new AggregateResolver(); $resolver->attach($pathStackResolver)->attach(new TemplateMapResolver($vmConfig['template_map'])); $renderer->setResolver($resolver); } elseif (isset($vmConfig['template_map'])) { // Create a TemplateMapResolver in case only the template_map has been defined $renderer->setResolver(new TemplateMapResolver($vmConfig['template_map'])); } elseif (isset($vmConfig['template_path_stack'])) { // Create a TemplatePathStack resolver in case only the template_path_stack has been defined $pathStackResolver = new TemplatePathStack(); $pathStackResolver->setPaths($vmConfig['template_path_stack']); $renderer->setResolver($pathStackResolver); } // Create a HelperPluginManager with default view helpers and user defined view helpers $renderer->setHelperPluginManager($this->createHelperPluginManager($sm)); return $renderer; } }
public function testSetRenderer() { $this->assertEquals('mailviewrenderer', $this->mailOptions->getRenderer()); $this->assertSame($this->mailOptions, $this->mailOptions->setRenderer('foo')); $this->assertEquals('foo', $this->mailOptions->getRenderer()); }