コード例 #1
0
 /**
  * @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;
     }
 }
コード例 #2
0
 public function testSetRenderer()
 {
     $this->assertEquals('mailviewrenderer', $this->mailOptions->getRenderer());
     $this->assertSame($this->mailOptions, $this->mailOptions->setRenderer('foo'));
     $this->assertEquals('foo', $this->mailOptions->getRenderer());
 }