Рендеринг шаблона и возврат ответа одновременно в Symfony - PullRequest
0 голосов
/ 07 апреля 2019

Я хочу создать PDF-файл и отправить его по электронной почте в виде вложения. используя Swift Mailer и knp-snappy-bundle. Проблема в том, что он генерирует и загружает файл PDF только без рендеринга шаблона. Я хочу, чтобы он генерировал PDF и одновременно отображал шаблон.

Код:

public function viewPostAction() {
  $html = "Just a sample text to produce the PDF";

  return new Response(
    $this->get('knp_snappy.pdf')->getOutputFromHtml($html),
    200,
    array(
      'Content-Type'          => 'application/pdf',
      'Content-Disposition'   => 'attachment; filename="classement.pdf"'
    )
  );
  $message = \Swift_Message::newInstance()
    ->setSubject('Some Subject')
    ->setFrom('test@gmail.com')
    ->setTo('test@gmail.com')
    ->setBody("test email")
    ->attach(Swift_Attachment::fromPath('C:\Users\acer\Downloads\classement.pdf'));

  # Send the message
  $this->get('mailer')
    ->send($message);
  $post = $this->getDoctrine()->getRepository('AppBundle:Post')->findAll();
  return $this->render("pages/index.html.twig", ['post' => $post]);
}

1 Ответ

1 голос
/ 07 апреля 2019

Ваш код возвращает созданный PDF-файл, поэтому остальные не выполняются. Вы должны изменить

return new Response(
    $this->get('knp_snappy.pdf')->getOutputFromHtml($html),
    200,
    array(
        'Content-Type'          => 'application/pdf',
        'Content-Disposition'   => 'attachment; filename="classement.pdf"'
    )
);

в код, который создает локальный файл PDF :

$this->get('knp_snappy.pdf')->generateFromHtml($html, 'C:\Users\acer\Downloads\classement.pdf');
...