/** * @expectedException \Sonatra\Bundle\MailerBundle\Exception\InvalidArgumentException * @expectedExceptionMessage The "test" layout is not a twig layout */ public function testGetTranslatedLayoutWithInvalidLayout() { $layout = $this->getMockBuilder(LayoutInterface::class)->getMock(); $layout->expects($this->once())->method('getTranslation')->will($this->returnValue(clone $layout)); $this->templater->expects($this->once())->method('getLocale')->will($this->returnValue('fr')); $this->layoutLoader->expects($this->once())->method('load')->with('test')->will($this->returnValue($layout)); $this->ext->getTranslatedLayout('test'); }
/** * Get the translated layout. * * @param string $layout The name of layout * * @return TwigLayout * * @throws UnknownLayoutException When the layout template does not exist * @throws InvalidArgumentException When the layout is not a twig layout */ public function getTranslatedLayout($layout) { $template = $this->layoutLoader->load($layout); $template = TranslationUtil::translateLayout($template, $this->getTemplater()->getLocale(), $this->translator); if (!$template instanceof TwigLayout) { $msg = 'The "%s" layout is not a twig layout'; throw new InvalidArgumentException(sprintf($msg, $layout)); } return $template; }
/** * Create the mail. * * @param array $config * * @return MailInterface */ protected function createMail(array $config) { $mail = $this->newMailInstance(); $mail->setName(ConfigUtil::getValue($config, 'name')); $mail->setLabel(ConfigUtil::getValue($config, 'label')); $mail->setDescription(ConfigUtil::getValue($config, 'description')); $mail->setType(ConfigUtil::getValue($config, 'type', MailTypes::TYPE_ALL)); $mail->setEnabled(ConfigUtil::getValue($config, 'enabled', true)); $mail->setSubject(ConfigUtil::getValue($config, 'subject')); $mail->setHtmlBody(ConfigUtil::getValue($config, 'html_body')); $mail->setBody(ConfigUtil::getValue($config, 'body')); $mail->setTranslationDomain(ConfigUtil::getValue($config, 'translation_domain')); if (isset($config['layout'])) { $mail->setLayout($this->layoutLoader->load($config['layout'])); } if (isset($config['translations']) && is_array($config['translations'])) { foreach ($config['translations'] as $translation) { $mail->addTranslation($this->createMailTranslation($mail, $translation)); } } return $mail; }