setDefaultLayout() 공개 메소드

Sets the default layout to be used with all the templates set when calling setTemplate.
public setDefaultLayout ( AcMailer\View\DefaultLayoutInterface $layout = null ) : mixed
$layout AcMailer\View\DefaultLayoutInterface
리턴 mixed
예제 #1
0
 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());
 }
 /**
  * Create service with name
  *
  * @param ServiceLocatorInterface $sm
  * @param $name
  * @param $requestedName
  * @return mixed
  */
 public function createServiceWithName(ServiceLocatorInterface $sm, $name, $requestedName)
 {
     $specificServiceName = explode('.', $name)[2];
     $this->mailOptions = $sm->get(sprintf('%s.%s.%s', self::ACMAILER_PART, MailOptionsAbstractFactory::SPECIFIC_PART, $specificServiceName));
     // Create the service
     $message = $this->createMessage();
     $transport = $this->createTransport($sm);
     $renderer = $this->createRenderer($sm);
     $mailService = new MailService($message, $transport, $renderer);
     // Set subject
     $mailService->setSubject($this->mailOptions->getMessageOptions()->getSubject());
     // Set body, either by using a template or a raw body
     $body = $this->mailOptions->getMessageOptions()->getBody();
     if ($body->getUseTemplate()) {
         $defaultLayoutConfig = $body->getTemplate()->getDefaultLayout();
         if (isset($defaultLayoutConfig['path'])) {
             $params = isset($defaultLayoutConfig['params']) ? $defaultLayoutConfig['params'] : [];
             $captureTo = isset($defaultLayoutConfig['template_capture_to']) ? $defaultLayoutConfig['template_capture_to'] : 'content';
             $mailService->setDefaultLayout(new DefaultLayout($defaultLayoutConfig['path'], $params, $captureTo));
         }
         $mailService->setTemplate($body->getTemplate()->toViewModel(), ['charset' => $body->getCharset()]);
     } else {
         $mailService->setBody($body->getContent(), $body->getCharset());
     }
     // Attach files
     $files = $this->mailOptions->getMessageOptions()->getAttachments()->getFiles();
     $mailService->addAttachments($files);
     // Attach files from dir
     $dir = $this->mailOptions->getMessageOptions()->getAttachments()->getDir();
     if ($dir['iterate'] === true && is_string($dir['path']) && is_dir($dir['path'])) {
         $files = $dir['recursive'] === true ? new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir['path'], \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST) : new \DirectoryIterator($dir['path']);
         /* @var \SplFileInfo $fileInfo */
         foreach ($files as $fileInfo) {
             if ($fileInfo->isDir()) {
                 continue;
             }
             $mailService->addAttachment($fileInfo->getPathname());
         }
     }
     // Attach mail listeners
     $this->attachMailListeners($mailService, $sm);
     return $mailService;
 }