/** * Create, configure and return the email renderer. * * @see FactoryInterface::createService() * @return \Zend\View\Renderer\RendererInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { $config = $serviceLocator->get('config'); if (empty($config['uj']['mail']['renderer'])) { throw new RuntimeException('Config required in order to create \\Uj\\Mail\\Renderer.' . 'required config key: $config["uj"]["mail"]["renderer"].'); } $rendererConfig = $config['uj']['mail']['renderer']; $resolver = new AggregateResolver(); if (isset($rendererConfig['templateMap'])) { $resolver->attach(new TemplateMapResolver($rendererConfig['templateMap'])); } if (isset($rendererConfig['templatePathStack'])) { $pathStackResolver = new TemplatePathStack(); $pathStackResolver->setPaths($rendererConfig['templatePathStack']); $resolver->attach($pathStackResolver); } $renderer = new PhpRenderer(); $renderer->setHelperPluginManager($serviceLocator->get('ViewHelperManager')); $renderer->setResolver($resolver); return $renderer; }
/** * @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 try { /** @var RendererInterface $renderer */ $renderer = $sm->get('mailviewrenderer'); 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; } }