public function setUp() { parent::setUp(); $this->renderer = new PdfRenderer(); $this->resolver = new TemplatePathStack(); $this->resolver->addPath(dirname(__DIR__) . '/_templates'); $this->renderer->setResolver($this->resolver); $htmlRenderer = new PhpRenderer(); $htmlRenderer->setResolver($this->resolver); $this->renderer->setHtmlRenderer($htmlRenderer); $this->renderer->setEngine($this->serviceManager->get('dompdf')); }
public function testNewRendererWithResolvers() { $templatePathStack1 = new Resolver\TemplatePathStack(); $templatePathStack1->addPath(realpath('view')); $templatePathStack2 = new Resolver\TemplatePathStack(); $templatePathStack2->addPath(realpath('view')); $resolvers1 = array($templatePathStack1); $resolvers2 = array($templatePathStack2); $class = new ReflectionClass('Lfj\\ZfRenderer\\Renderer'); $property = $class->getProperty("resolvers"); $property->setAccessible(true); $rendererResolvers1 = new Renderer(null, null, $resolvers1); $rendererResolvers2 = $rendererResolvers1->withResolvers($resolvers2); $resolversFromRendererResolvers1 = $property->getValue($rendererResolvers1); $resolversFromRendererResolvers2 = $property->getValue($rendererResolvers2); // all resolvers of $rendererResolvers1 must be the same as the ones in $resolvers1 // but must be different from the ones in $resolvers2 foreach ($resolversFromRendererResolvers1 as $i => $v) { $this->assertSame($resolvers1[$i], $v); $this->assertNotSame($resolvers2[$i], $v); } // all resolvers of $rendererResolvers2 must be the same as the ones in $resolvers2 // but must be different from the ones in $resolvers1 foreach ($resolversFromRendererResolvers2 as $i => $v) { $this->assertSame($resolvers2[$i], $v); $this->assertNotSame($resolvers1[$i], $v); } }
/** * @return PhpRenderer */ public function getTestRenderer() { $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/../views'); $renderer = new PhpRenderer(); $renderer->setResolver($resolver); return $renderer; }
public function getContent() { $info = new \SplFileInfo($this->file); $renderer = new PhpRenderer(); $stack = new TemplatePathStack(); $stack->addPath($info->getPath()); $stack->setDefaultSuffix(pathinfo($this->file, PATHINFO_EXTENSION)); $renderer->setResolver($stack); return $renderer->render($info->getBasename()); }
public function testRenderingAnotherTemplateInsideATemplate() { $expectedContent = 'hello world'; $content = null; $template = realpath('view/template-with-renderer.phtml'); $templatePathStack = new Resolver\TemplatePathStack(); $templatePathStack->addPath(realpath('view')); $renderer = new Renderer(); $rendererWithTemplatePathStack = $renderer->withResolvers(array($templatePathStack)); $viewVariables = array('name' => 'world', 'renderer' => $rendererWithTemplatePathStack); $renderedContent = $rendererWithTemplatePathStack->render($template, $viewVariables); $this->assertEquals('Zend\\Stdlib\\Response', get_class($renderedContent->getResponse())); $this->assertEquals($expectedContent, $renderedContent->getResponse()->getContent()); }
/** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->renderer = new PdfRenderer(); $this->strategy = new PdfStrategy($this->renderer); $this->event = new ViewEvent(); $this->response = new HttpResponse(); $this->resolver = new TemplatePathStack(); $this->resolver->addPath(dirname(__DIR__) . '/_templates'); $this->renderer->setResolver($this->resolver); $htmlRenderer = new PhpRenderer(); $htmlRenderer->setResolver($this->resolver); $this->renderer->setHtmlRenderer($htmlRenderer); $this->renderer->setEngine($this->getServiceManager()->get('dompdf')); }
/** * 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; }
public function testWithDefaultLayout() { $options = ['message_options' => ['body' => ['use_template' => true, 'template' => ['path' => 'ac-mailer/mail-templates/mail', 'default_layout' => ['path' => 'ac-mailer/mail-templates/layout']]]]]; $this->initServiceLocator($options); $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/../../view'); $renderer = new PhpRenderer(); $renderer->setResolver($resolver); $this->serviceLocator->set('mailviewrenderer', $renderer); $mailService = $this->mailServiceFactory->__invoke($this->serviceLocator, 'acmailer.mailservice.default'); $this->assertInstanceOf('Zend\\Mime\\Message', $mailService->getMessage()->getBody()); }
public function testValidTemplateMakesBodyToBeMimeMessage() { $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/../../view'); $this->mailService->getRenderer()->setResolver($resolver); $this->mailService->setTemplate('ac-mailer/mail-templates/mail.phtml'); $this->assertInstanceOf('Zend\\Mime\\Message', $this->mailService->getMessage()->getBody()); }
/** * 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; }
public function testTemplateBody() { $options = array('template' => array('use_template' => true, 'path' => 'ac-mailer/mail-templates/layout', 'children' => array('content' => array('path' => 'ac-mailer/mail-templates/mail'))), 'body' => 'This body is not going to be used'); $this->initServiceLocator($options); $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/../../view'); $renderer = new PhpRenderer(); $renderer->setResolver($resolver); $this->serviceLocator->set('mailviewrenderer', $renderer); $mailService = $this->mailServiceFactory->createService($this->serviceLocator); $this->assertNotEquals($options['body'], $mailService->getMessage()->getBody()); $this->assertInstanceOf('Zend\\Mime\\Message', $mailService->getMessage()->getBody()); }
public function testWithDefaultLayout() { $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/../../view'); $this->mailService->getRenderer()->setResolver($resolver); $model = new ViewModel(); $model->setTemplate('ac-mailer/mail-templates/layout.phtml'); $this->mailService->setDefaultLayout(new DefaultLayout($model)); $this->mailService->setTemplate('ac-mailer/mail-templates/mail.phtml'); $this->assertInstanceOf('Zend\\Mime\\Message', $this->mailService->getMessage()->getBody()); }