Метод htmlTemplate класса TemplatedEmail
Метод htmlTemplate класса TemplatedEmail
задаёт Twig-шаблон, который будет использован
для генерации HTML-версии письма. Первым
параметром передаётся путь к Twig-шаблону
относительно каталога templates.
Вторым необязательным параметром можно передать
массив контекста с переменными для шаблона.
Метод возвращает текущий объект письма, что
позволяет строить цепочку вызовов.
Синтаксис
public function htmlTemplate(string $template, array $context = []): static
Пример
Давайте создадим письмо и зададим ему HTML-шаблон:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\TemplatedEmail;
class MailController extends AbstractController
{
public function send(MailerInterface $mailer): Response
{
$email = (new TemplatedEmail())
->from('sender@example.com')
->to('recipient@example.com')
->subject('Hello')
->htmlTemplate('email/hello.html.twig');
$mailer->send($email);
return new Response('sent');
}
}
?>
Теперь создадим сам Twig-шаблон:
<h1>Hello</h1>
<p>This is an HTML email.</p>
Результат выполнения кода:
sent
Пример
Давайте передадим переменные в HTML-шаблон через второй параметр:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\TemplatedEmail;
class MailController extends AbstractController
{
public function send(MailerInterface $mailer): Response
{
$email = (new TemplatedEmail())
->from('sender@example.com')
->to('recipient@example.com')
->subject('Hello')
->htmlTemplate('email/user.html.twig', [
'name' => 'abcde',
]);
$mailer->send($email);
return new Response('sent');
}
}
?>
Содержимое Twig-шаблона:
<p>Hello, {{ name }}!</p>
Результат выполнения кода:
"<p>Hello, abcde!</p>"
Пример
Давайте используем метод context вместо второго параметра:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\TemplatedEmail;
class MailController extends AbstractController
{
public function send(MailerInterface $mailer): Response
{
$email = (new TemplatedEmail())
->from('sender@example.com')
->to('recipient@example.com')
->subject('Hello')
->htmlTemplate('email/user.html.twig')
->context([
'name' => 'abcde',
]);
$mailer->send($email);
return new Response('sent');
}
}
?>
Результат выполнения кода:
"<p>Hello, abcde!</p>"
Смотрите также
-
класс
TemplatedEmail,
который представляет письмо на основе Twig-шаблона -
метод
textTemplate,
который задаёт Twig-шаблон для текстовой версии письма -
метод
context,
который задаёт переменные для Twig-шаблона -
метод
getHtmlTemplate,
который возвращает путь к HTML-шаблону письма