/** * @param ContainerInterface $container * @returns ZendViewRenderer */ public function __invoke(ContainerInterface $container) { $config = $container->has('config') ? $container->get('config') : []; $config = isset($config['templates']) ? $config['templates'] : []; // Configuration $resolver = new Resolver\AggregateResolver(); $resolver->attach(new Resolver\TemplateMapResolver(isset($config['map']) ? $config['map'] : []), 100); // Create the renderer $renderer = new PhpRenderer(); $renderer->setResolver($resolver); $manager = $container->has(HelperPluginManager::class) ? $container->get(HelperPluginManager::class) : new HelperPluginManager(); // Inject helpers $this->injectHelpers($renderer, $manager); // Initialize renderer for HelperPluginManager $manager->setRenderer($renderer); // Inject renderer $view = new ZendViewRenderer($renderer, isset($config['layout']) ? $config['layout'] : null); // Add template paths $allPaths = isset($config['paths']) && is_array($config['paths']) ? $config['paths'] : []; foreach ($allPaths as $namespace => $paths) { $namespace = is_numeric($namespace) ? null : $namespace; foreach ((array) $paths as $path) { $view->addPath($path, $namespace); } } return $view; }
/** * Create the aggregate view resolver * * Creates a Zend\View\Resolver\AggregateResolver and attaches the template * map resolver and path stack resolver * * @param ServiceLocatorInterface $serviceLocator * @return ViewResolver\AggregateResolver */ public function createService(ServiceLocatorInterface $serviceLocator) { $resolver = new ViewResolver\AggregateResolver(); $resolver->attach($serviceLocator->get('ViewTemplateMapResolver')); $resolver->attach($serviceLocator->get('ViewTemplatePathStack')); return $resolver; }
/** * @param $controller * @param array $actions * @param AggregateResolver $viewResolver */ private function handleActions($controller, array $actions, AggregateResolver $viewResolver) { foreach ($actions as $action) { $template = $this->resolveTemplate($controller, $action); $resolved = $viewResolver->resolve($template); $this->addPath($controller, $action, $resolved); } }
public function setUp() { if (!class_exists('ZendDeveloperTools\\Collector\\AbstractCollector')) { $this->markTestSkipped('ZDT not available'); } parent::setUp(); $resolver = new AggregateResolver(); $resolver->attach($this->getResolver()); $this->collector = new LayoutCollector($this->layout, $this->layoutUpdater, $resolver); }
/** * Create the aggregate view resolver * * Creates a Zend\View\Resolver\AggregateResolver and attaches the template * map resolver and path stack resolver * * @param ContainerInterface $container * @param string $name * @param null|array $options * @return ViewResolver\AggregateResolver */ public function __invoke(ContainerInterface $container, $name, array $options = null) { $resolver = new ViewResolver\AggregateResolver(); /* @var $mapResolver \Zend\View\Resolver\ResolverInterface */ $mapResolver = $container->get('ViewTemplateMapResolver'); /* @var $pathResolver \Zend\View\Resolver\ResolverInterface */ $pathResolver = $container->get('ViewTemplatePathStack'); /* @var $prefixPathStackResolver \Zend\View\Resolver\ResolverInterface */ $prefixPathStackResolver = $container->get('ViewPrefixPathStackResolver'); $resolver->attach($mapResolver)->attach($pathResolver)->attach($prefixPathStackResolver)->attach(new ViewResolver\RelativeFallbackResolver($mapResolver))->attach(new ViewResolver\RelativeFallbackResolver($pathResolver))->attach(new ViewResolver\RelativeFallbackResolver($prefixPathStackResolver)); return $resolver; }
/** * Create the aggregate view resolver * * Creates a Zend\View\Resolver\AggregateResolver and attaches the template * map resolver and path stack resolver * * @param ServiceLocatorInterface $serviceLocator * @return ViewResolver\AggregateResolver */ public function createService(ServiceLocatorInterface $serviceLocator) { $resolver = new ViewResolver\AggregateResolver(); /* @var $mapResolver \Zend\View\Resolver\ResolverInterface */ $mapResolver = $serviceLocator->get('ViewTemplateMapResolver'); /* @var $pathResolver \Zend\View\Resolver\ResolverInterface */ $pathResolver = $serviceLocator->get('ViewTemplatePathStack'); /* @var $prefixPathStackResolver \Zend\View\Resolver\ResolverInterface */ $prefixPathStackResolver = $serviceLocator->get('ViewPrefixPathStackResolver'); $resolver->attach($mapResolver)->attach($pathResolver)->attach($prefixPathStackResolver)->attach(new ViewResolver\RelativeFallbackResolver($mapResolver))->attach(new ViewResolver\RelativeFallbackResolver($pathResolver))->attach(new ViewResolver\RelativeFallbackResolver($prefixPathStackResolver)); return $resolver; }
/** * @param ContainerInterface $container * @return PhpRenderer */ public function __invoke(ContainerInterface $container) { $config = $container->get('config'); $viewHelperPluginManager = $container->get(HelperPluginManager::class); // Create the engine instance: $renderer = new PhpRenderer(); // Configure it: $resolver = new Resolver\AggregateResolver(); $resolver->attach(new Resolver\TemplateMapResolver($config['templates']), 100); $renderer->setResolver($resolver); $renderer->setHelperPluginManager($viewHelperPluginManager); return $renderer; }
/** * Return the PHP Renderer to render the partials * @return null|PhpRenderer */ protected function getRenderer() { if (!is_null($this->renderer)) { return $this->renderer; } $renderer = $this->getServiceLocator()->get('Zend\\View\\Renderer\\RendererInterface'); $resolver = new AggregateResolver(); $stack = new TemplatePathStack(); $config = $this->getServiceLocator()->get('Config'); foreach ($config['view_manager']["template_path_stack"] as $path) { $stack->addPath($path); } $resolver->attach($stack); $renderer->setResolver($resolver); return $this->renderer = $renderer; }
/** * @param $name * @param $path * @return View */ private function createView($name, $path) { $ar = new Resolver\AggregateResolver(); $helper = $this->helpers; $map = new Resolver\TemplateMapResolver(array($name => $path)); $ar->attach($map); foreach ($this->resolvers as $r) { $ar->attach($r); } $renderer = new PhpRenderer(); $renderer->setHelperPluginManager($helper); $renderer->setResolver($ar); $strategy = new PhpRendererStrategy($renderer); $view = new View(); $view->setEventManager(clone $this->events); $view->setResponse(new Response()); $view->getEventManager()->attach($strategy); return $view; }
/** * 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; }
/** * Create the aggregate view resolver * * Creates a Zend\View\Resolver\AggregateResolver and attaches the template * map resolver and path stack resolver * * @param ServiceLocatorInterface $serviceLocator * @return ViewResolverAggregateResolver */ public function createService(ServiceLocatorInterface $serviceLocator) { $resolver = new ViewResolver\AggregateResolver(); $resolver->attach($serviceLocator->get('ViewTemplateMapResolver')); /**#@+ * Replace with Pi template mechanism */ $moduleTemplateResolver = new ModuleTemplateResolver(); $themeTemplateResolver = new ThemeTemplateResolver(); $componentTemplateResolver = new ComponentTemplateResolver(); $resolver->attach($moduleTemplateResolver); $resolver->attach($themeTemplateResolver); $resolver->attach($componentTemplateResolver); /**#@-*/ $resolver->attach($serviceLocator->get('ViewTemplatePathStack')); return $resolver; }
public function testReturnsFalseWhenAttemptingToResolveWhenNoResolversAreAttached() { $resolver = new Resolver\AggregateResolver(); $this->assertFalse($resolver->resolve('foo')); $this->assertEquals(Resolver\AggregateResolver::FAILURE_NO_RESOLVERS, $resolver->getLastLookupFailure()); }
/** * Retorna em string arquivo php renderizado incluindo variaveis que a ele são passadas. * Ideal para enviar emails e outras coisas. * * @param string $viewFile Arquivo php para renderizar, este arquivo deve ser relativo a 'module/Application/view' * @param array $vars * @return string */ protected function render($viewFile, array $vars = array()) { $view = new ViewModel($vars); $view->setTemplate($viewFile); $resolver = new AggregateResolver(); $resolver->attach(new TemplatePathStack(array('script_paths' => array("module/" . ucfirst(strtolower($this->getModuleName())) . "/view")))); $renderer = new PhpRenderer(); $renderer->setResolver($resolver); return $renderer->render($view); }
/** * @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; } }
/** * Init renderer object */ protected function initRenderer() { $renderer = new PhpRenderer(); $plugins = $renderer->getHelperPluginManager(); $config = new \Zend\Form\View\HelperConfig(); $config->configureServiceManager($plugins); $resolver = new Resolver\AggregateResolver(); $map = new Resolver\TemplateMapResolver($this->getTable()->getOptions()->getTemplateMap()); $resolver->attach($map); $renderer->setResolver($resolver); $this->renderer = $renderer; }
/** * Attaches a new NamespacedPathStackResolver to the AggregateResolver * * A priority of 0 is used, to ensure it is the last queried. * * @param AggregateResolver $aggregate */ private function injectNamespacedResolver(AggregateResolver $aggregate) { $aggregate->attach(new NamespacedPathStackResolver(), 0); }
public function test() { /* $viewConfigExample = [ 'some-view' => [ // view name 'template' => 'some-template', // html template //--- not required options 'viewModel' => 'some-view-model|\Some\ViewModel::class', // Instance of ViewModel 'extend' => 'parent-view', // extended view 'capture' => 'some-capture', // for grouping views 'children' => [ 'child-view'// array of views ], 'childrenDynamicLists' => [ // will be generated by list from one of child 'child-view' => 'listVar' // every entry in listVar will be setted to genereted child ], 'data' => [ // required data 'fromGlobal' => 'varName', // // will be set as variables from global data 'fromParent' => 'varName', // will be set as variables by calling getVariable('varName') from parent 'static' => [ // will be set as variables 'key' => 'value' ], ], ], ]; */ $renderer = new PhpRenderer(); $resolver = new Resolver\AggregateResolver(); $map = new Resolver\TemplateMapResolver(array('page' => __DIR__ . '/view/page.phtml', 'comments-list' => __DIR__ . '/view/comments-list.phtml', 'comment' => __DIR__ . '/view/comment.phtml', 'user' => __DIR__ . '/view/user.phtml')); $stack = new Resolver\TemplatePathStack(array('script_paths' => array(__DIR__ . '/view'))); $resolver->attach($map)->attach($stack)->attach(new Resolver\RelativeFallbackResolver($map))->attach(new Resolver\RelativeFallbackResolver($stack)); $renderer->setResolver($resolver); $view = new View(); $response = new Response(); $view->setResponse($response); $strategy = new PhpRendererStrategy($renderer); $strategy->attach($view->getEventManager()); $viewConfig = ['layouts' => ['layout' => ['template' => 'layout']], 'contents' => ['page' => ['layout' => 'layout', 'template' => 'page', 'children' => ['comments-list' => ['extend' => 'comments-list', 'template' => 'comments-list'], 'comment-create' => ['template' => 'comment-create', 'children' => ['myself-info' => ['viewModel' => \Sebaks\ViewTest\MyselfViewModel::class, 'template' => 'user'], 'comment-create-form' => ['template' => 'form', 'children' => ['form-element-textarea' => ['capture' => 'form-element', 'template' => 'form-element-textarea'], 'form-element-button' => ['capture' => 'form-element', 'template' => 'form-element-button']]]]], 'users-table' => ['template' => 'table', 'children' => ['table-head-rows' => ['template' => 'table-tr', 'data' => ['fromParent' => 'rows'], 'children' => ['table-th' => ['template' => 'table-th', 'capture' => 'table-td', 'data' => ['fromParent' => 'value']]], 'childrenDynamicLists' => ['table-th' => 'rows']], 'table-body-rows' => ['template' => 'table-tr', 'data' => ['fromParent' => 'rows'], 'children' => ['table-td' => ['template' => 'table-td', 'data' => ['fromParent' => 'value']]], 'childrenDynamicLists' => ['table-td' => 'rows']]], 'childrenDynamicLists' => ['table-body-rows' => 'bodyRows', 'table-head-rows' => 'headRows'], 'data' => ['static' => ['headRows' => [['Id', 'Name']], 'bodyRows' => [['1', 'John'], ['2', 'Helen']]]]]]]], 'blocks' => ['comments-list' => ['children' => ['comment' => ['viewModel' => \Sebaks\ViewTest\CommentViewModel::class, 'template' => 'comment', 'children' => ['user' => ['viewModel' => \Sebaks\ViewTest\UserViewModel::class, 'template' => 'user', 'data' => ['fromParent' => 'userId', 'static' => ['class' => 'user']], 'children' => ['location' => ['viewModel' => \Sebaks\ViewTest\LocationViewModel::class, 'template' => 'location', 'data' => ['fromParent' => 'countryId']]]]], 'data' => ['fromParent' => ['foo' => 'bar', 'comment' => 'comment']]]], 'childrenDynamicLists' => ['comment' => 'comments'], 'data' => ['fromGlobal' => ['foo' => 'bar', 'result' => 'comments']]]]]; $data = ['result' => [['id' => 'c1', 'userId' => 'u1', 'text' => 'text of c1'], ['id' => 'c2', 'userId' => 'u2', 'text' => 'text of c2']]]; $serviceLocator = new \Zend\ServiceManager\ServiceManager(); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\CommentViewModel::class, \Sebaks\ViewTest\CommentViewModel::class, false); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\UserViewModel::class, \Sebaks\ViewTest\UserViewModel::class, false); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\LocationViewModel::class, \Sebaks\ViewTest\LocationViewModel::class, false); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\MyselfViewModel::class, \Sebaks\ViewTest\MyselfViewModel::class, false); ///////////////////// $config = ['sebaks-view' => $viewConfig]; $serviceLocator->setService('config', $config); $serviceLocator->setService('EventManager', new EventManager()); $request = new Request(); $serviceLocator->setService('Request', $request); //$response = new Response(); $serviceLocator->setService('Response', $response); $e = new MvcEvent(); $e->setRequest($request); $e->setResponse($response); $dispatchResult = new ViewModel(); $dispatchResult->setVariables($data); $e->setResult($dispatchResult); $routeMatch = new RouteMatch([]); $routeMatch->setMatchedRouteName('page'); $e->setRouteMatch($routeMatch); $application = new Application([], $serviceLocator); $e->setApplication($application); ///////////////////// $viewBuilder = new BuildViewListener(); $viewBuilder->injectLayout($e); $pageViewModel = $e->getViewModel(); $view->render($pageViewModel); $result = $response->getBody(); $expected = '<body><ul><li>text of c1 <div class="user">John<span class="location">Ukraine</span></div></li><li>text of c2 <div class="user">Helen<span class="location">United States</span></div></li></ul> <div class="">Me</div><form><textarea></textarea><button type="submit">Submit</button></form><table> <thead> <tr><th>Id</th><th>Name</th></tr> </thead> <tbody> <tr><td>1</td><td>John</td></tr><tr><td>2</td><td>Helen</td></tr> </tbody> </table></body>'; $this->assertEquals($expected, $result); }
public function testRender() { $renderer = new PhpRenderer(); $resolver = new Resolver\AggregateResolver(); $map = new Resolver\TemplateMapResolver(array('page' => __DIR__ . '/view/page.phtml', 'comments-list' => __DIR__ . '/view/comments-list.phtml', 'comment' => __DIR__ . '/view/comment.phtml', 'user' => __DIR__ . '/view/user.phtml')); $stack = new Resolver\TemplatePathStack(array('script_paths' => array(__DIR__ . '/view'))); $resolver->attach($map)->attach($stack)->attach(new Resolver\RelativeFallbackResolver($map))->attach(new Resolver\RelativeFallbackResolver($stack)); $renderer->setResolver($resolver); $view = new View(); $response = new Response(); $view->setResponse($response); $strategy = new PhpRendererStrategy($renderer); $strategy->attach($view->getEventManager()); ///////////////////////////////////////////////// $viewConfigExample = ['some-view' => ['template' => 'some-template', 'viewModel' => 'some-view-model|\\Some\\ViewModel::class', 'extend' => 'parent-view', 'capture' => 'some-capture', 'children' => ['child-view'], 'childrenDynamicLists' => ['child-view' => 'listVar'], 'data' => ['fromGlobal' => 'varName', 'fromParent' => 'varName', 'static' => ['key' => 'value']], 'dataProvider' => 'some-view-model|\\Some\\DataProvider::class']]; ////////////// $viewConfig = ['page' => ['template' => 'page', 'children' => ['comments-list', 'comment-create' => ['template' => 'comment-create', 'children' => ['myself-info' => ['viewModel' => \Sebaks\ViewTest\MyselfViewModel::class, 'template' => 'user'], 'comment-create-form' => ['template' => 'form', 'children' => ['form-element-textarea' => ['capture' => 'form-element', 'template' => 'form-element-textarea'], 'form-element-button' => ['capture' => 'form-element', 'template' => 'form-element-button']]]]], 'users-table' => ['template' => 'table', 'children' => ['table-head-rows' => ['template' => 'table-tr', 'data' => ['fromParent' => 'rows'], 'children' => ['table-th' => ['template' => 'table-th', 'capture' => 'table-td', 'data' => ['fromParent' => 'value']]], 'childrenDynamicLists' => ['table-th' => 'rows']], 'table-body-rows' => ['template' => 'table-tr', 'data' => ['fromParent' => 'rows'], 'children' => ['table-td' => ['template' => 'table-td', 'data' => ['fromParent' => 'value']]], 'childrenDynamicLists' => ['table-td' => 'rows']]], 'childrenDynamicLists' => ['table-body-rows' => 'bodyRows', 'table-head-rows' => 'headRows'], 'data' => ['static' => ['headRows' => [['Id', 'Name']], 'bodyRows' => [['1', 'John'], ['2', 'Helen']]]]]]], 'comments-list' => ['template' => 'comments-list', 'children' => ['comment' => ['viewModel' => \Sebaks\ViewTest\CommentViewModel::class, 'template' => 'comment', 'children' => ['user' => ['viewModel' => \Sebaks\ViewTest\UserViewModel::class, 'template' => 'user', 'data' => ['fromParent' => ['comment:userId' => 'userId'], 'static' => ['class' => 'user']]]], 'data' => ['fromParent' => ['comment' => 'comment']]]], 'childrenDynamicLists' => ['comment' => 'comments'], 'data' => ['fromGlobal' => 'comments']]]; $data = ['comments' => [['id' => 'c1', 'userId' => 'u1', 'text' => 'text of c1'], ['id' => 'c2', 'userId' => 'u2', 'text' => 'text of c2']]]; $serviceLocator = new \Zend\ServiceManager\ServiceManager(); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\CommentViewModel::class, \Sebaks\ViewTest\CommentViewModel::class, false); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\UserViewModel::class, \Sebaks\ViewTest\UserViewModel::class, false); $serviceLocator->setInvokableClass(\Sebaks\ViewTest\MyselfViewModel::class, \Sebaks\ViewTest\MyselfViewModel::class, false); ///////////////////// $config = new Config($viewConfig); $viewBuilder = new ViewBuilder($config, $serviceLocator); $pageViewModel = $viewBuilder->build($viewConfig['page'], $data); ///////////////////// $view->render($pageViewModel); $result = $response->getBody(); $expected = '<ul><li>text of c1 <div class="user">John</div></li><li>text of c2 <div class="user">Helen</div></li></ul> <div class="">Me</div><form><textarea></textarea><button type="submit">Submit</button></form><table> <thead> <tr><th>Id</th><th>Name</th></tr> </thead> <tbody> <tr><td>1</td><td>John</td></tr><tr><td>2</td><td>Helen</td></tr> </tbody> </table>'; $this->assertEquals($expected, $result); }
/** * Prepare email to send. */ private function prepare($email) { //Template Variables $templateVars = $this->config["template_vars"]; $templateVars = array_merge($templateVars, $email->toArray()); //If not layout, use default if (!$email->getLayoutName()) { $email->setLayoutName($this->config["defaults"]["layout_name"]); } //If not recipient, send to admin if (count($email->getTo()) == 0) { $email->addTo($this->config["emails"]["admin"]); } //If not sender, use default if (!$email->getFrom()) { $email->setFrom($this->config["defaults"]["from_email"]); $email->setFromName($this->config["defaults"]["from_name"]); } //Render system $renderer = new PhpRenderer(); $resolver = new AggregateResolver(); $stack = new TemplatePathStack(); foreach ($this->config["template_path_stack"] as $path) { $stack->addPath($path); } $resolver->attach($stack); $renderer->setResolver($resolver); // Subject if (!$email->getSubject()) { $subjectView = $this->createView($templateVars, "subject", $email->getTemplateName()); try { $email->setSubject($renderer->render($subjectView)); } catch (\Exception $e) { $email->setSubject(null); } } // Text Content if (!$email->getTextContent()) { $textView = $this->createView($templateVars, "txt", $email->getTemplateName()); $layoutTextView = new ViewModel($templateVars); $layoutTextView->setTemplate("/layout/txt/" . $email->getLayoutName()); try { $layoutTextView->setVariable("content", $renderer->render($textView)); $email->setTextContent($renderer->render($layoutTextView)); } catch (\Exception $e) { $email->setTextContent(null); } } // Html Content if (!$email->getHtmlContent()) { $htmlView = $this->createView($templateVars, "html", $email->getTemplateName()); $layoutHtmlView = new ViewModel($templateVars); $layoutHtmlView->setTemplate("/layout/html/" . $email->getLayoutName()); try { $layoutHtmlView->setVariable("content", $renderer->render($htmlView)); $email->setHtmlContent($renderer->render($layoutHtmlView)); } catch (\Exception $e) { $email->setHtmlContent(null); } } //Create Zend Message $message = new Message(); //From $message->setFrom($email->getFrom(), $email->getFromName()); //Reply to if ($this->config["defaults"]["reply_to"]) { $message->addReplyTo($this->config["defaults"]["reply_to"], $this->config["defaults"]["reply_to_name"]); } if ($email->getReplyTo()) { $message->addReplyTo($email->getReplyTo(), $email->getReplyToName()); } //To recipients foreach ($email->getTo() as $emailAddress => $user) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addTo($emailAddress, $user->getFullName()); } } else { $message->addTo($emailAddress, $user); } } //Cc recipients foreach ($email->getCc() as $emailAddress => $name) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addCc($emailAddress, $user->getFullName()); } } else { $message->addCc($emailAddress, $user); } } //Bcc recipients foreach ($email->getBcc() as $emailAddress => $name) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addBcc($emailAddress, $user->getFullName()); } } else { $message->addBcc($emailAddress, $user); } } //Subject if ($email->getSubject()) { $message->setSubject($email->getSubject()); } // Body Multipart // Issue - not able to send TXT and HTML multibody // http://framework.zend.com/issues/browse/ZF2-196 /* if($textContent) { $textContent = new MimePart($textContent); $textContent->type = "text/plain"; } if($htmlContent) { $htmlContent = new MimePart($htmlContent); $htmlContent->type = "text/html"; } $body = new MimeMessage(); $body->setParts(array($textContent, $htmlContent)); $message->setBody($body); $message->getHeaders()->get('content-type')->setType('multipart/alternative'); */ //Body (Just html email right now) $htmlContent = new MimePart($email->getHtmlContent()); $htmlContent->type = "text/html"; $body = new MimeMessage(); $body->setParts(array($htmlContent)); $message->setBody($body); return $message; }