AcMailer\Service\MailService::setTemplate PHP Method

setTemplate() public method

Sets the body of this message from a template
See also: AcMailer\Service\MailServiceInterface::setTemplate()
public setTemplate ( string | Zend\View\Model\ViewModel $template, array $params = [] )
$template string | Zend\View\Model\ViewModel
$params array
    public function setTemplate($template, array $params = [])
    {
        if ($template instanceof ViewModel) {
            $view = $template;
        } else {
            $view = new ViewModel();
            $view->setTemplate($template)->setVariables($params);
        }
        // Check if a common layout has to be used
        if ($this->defaultLayout->hasModel()) {
            $layoutModel = $this->defaultLayout->getModel();
            $layoutModel->addChild($view, $this->defaultLayout->getTemplateCaptureTo());
            $view = $layoutModel;
        }
        // Render the template and all of its children
        $this->renderChildren($view);
        $charset = isset($params['charset']) ? $params['charset'] : null;
        $this->setBody($this->renderer->render($view), $charset);
    }

Usage Example

 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());
 }
All Usage Examples Of AcMailer\Service\MailService::setTemplate