树枝如何将树枝模板渲染为变量

时间:2018-08-10 09:56:40

标签: symfony

我正在尝试使用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文档非常模糊。

2 个答案:

答案 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字符串。

相关问题