我正在尝试使用symfony将树枝模板渲染为变量。我有一个“ sendAction”控制器,它使用mailgun API将电子邮件发送到一个或多个邮件列表。这是我的控制器代码:
public function sendAction(Request $request, Newsletter $newsletter, MailgunManager $mailgunManager) {
$form = $this->createForm(SendForm::class);
$form->handleRequest($request);
$formData = array();
if ($form->isSubmitted() && $form->isValid()) {
$formData = $form->getData();
$mailingLists = $formData['mailingLists'];
foreach ($mailingLists as $list) {
$mailgunManager->sendMail($list->getAddress(), $newsletter->getSubject(), 'test', $newsletter->getHtmlContent());
return $this->render('webapp/newsletter/sent.html.twig');
}
}
return $this->render('webapp/newsletter/send.html.twig', array(
'newsletter' => $newsletter,
'form' => $form->createView()
));
}
}
这是我的sendMail(mailgun)函数:
public function sendMail($mailingList, $subject, $textBody, $htmlBody) {
$mgClient = new Mailgun($this::APIKEY);
# Make the call to the client.
$mgClient->sendMessage($this::DOMAIN, array(
'from' => $this::SENDER,
'to' => $mailingList,
'subject' => $subject,
'text' => $textBody,
'html' => $htmlBody
));
}
我希望我的“ $ newsletter-> getHtmlContent()”呈现名为“ newsletter.twig.html”的模板。任何人都可以帮助我,或者为我提供正确的方向,或者我可以在哪里找到关于我要做什么的教程或笔记。 symfony文档非常模糊。
答案 0 :(得分:0)
您可以使用链接到渲染功能的getContent()
。
return $this->render('webapp/newsletter/send.html.twig', array(
'newsletter' => $newsletter,
'form' => $form->createView()
))->getContent();
答案 1 :(得分:0)
只需将Symfony\Bundle\FrameworkBundle\Templating\EngineInterface
的实例注入您的操作中,就可以直接使用Twig:
public function sendAction(Request $request, EngineInterface $tplEngine, Newsletter $newsletter, MailgunManager $mailgunManager)
{
// ... other code
$html = $tplEngine->render('webapp/newsletter/send.html.twig', [
'newsletter' => $newsletter,
'form' => $form->createView()
]);
}
请注意,$this->render()
(在控制器操作中)将返回Symfony\Component\HttpFoundation\Response
的实例,而$tplEngine->render()
返回HTML字符串。