РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
783 of 1361 menu

Метод context класса TemplatedEmail

Метод context класса TemplatedEmail задаёт массив переменных, которые будут доступны внутри Twig-шаблона письма. Первым параметром передаётся ассоциативный массив с данными. Метод возвращает текущий объект письма, что позволяет выстраивать цепочку вызовов.

Синтаксис

public function context(array $context): static

Пример

Давайте создадим письмо и передадим в шаблон переменную name:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMimeEmailEmail; use SymfonyComponentMimeEmailTemplatedEmail; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $email = (new TemplatedEmail()) ->from('sender@example.com') ->to('recipient@example.com') ->subject('Hello') ->htmlTemplate('email/article.html.twig') ->context([ 'name' => 'abcde', ]); return new Response('email created'); } } ?>

Теперь переменная name доступна в шаблоне:

<p>Hello, {{ name }}!</p>

Результат выполнения кода:

<p>Hello, abcde!</p>

Пример

Давайте передадим в шаблон несколько переменных разных типов:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMimeEmailTemplatedEmail; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $email = (new TemplatedEmail()) ->from('sender@example.com') ->to('recipient@example.com') ->subject('Article') ->htmlTemplate('email/article.html.twig') ->context([ 'title' => 'article', 'items' => ['a', 'b', 'c', 'd', 'e'], 'count' => 5, ]); return new Response('email created'); } } ?>

Выведем эти переменные в шаблоне:

<h1>{{ title }}</h1> <p>Count: {{ count }}</p> <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul>

Результат выполнения кода:

<h1>article</h1> <p>Count: 5</p> <ul> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> </ul>

Пример

Давайте используем метод context вместе с методом textTemplate для текстовой версии письма:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMimeEmailTemplatedEmail; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $email = (new TemplatedEmail()) ->from('sender@example.com') ->to('recipient@example.com') ->subject('Hello') ->htmlTemplate('email/article.html.twig') ->textTemplate('email/article.txt.twig') ->context([ 'name' => 'user', ]); return new Response('email created'); } } ?>

Переменная name будет доступна в обоих шаблонах:

Hello, {{ name }}!

Результат выполнения кода:

"Hello, user!"

Смотрите также

  • класс TemplatedEmail,
    который создаёт письмо на основе Twig-шаблона
  • метод htmlTemplate,
    который задаёт HTML-шаблон письма
  • метод textTemplate,
    который задаёт текстовый шаблон письма
  • метод getContext,
    который возвращает массив переменных шаблона
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить