Пример #1
0
 /**
  * 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;
     }
 }