@hermina.hauck
Для использования Twig в Yii2 для шаблонов писем, вам необходимо выполнить следующие шаги:
1
|
"twig/twig": "~2.0" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
'view' => [ 'class' => 'yiiwebView', 'renderers' => [ 'twig' => [ 'class' => 'yii wigViewRenderer', // Сообщите, где располагаются шаблоны 'options' => [ 'auto_reload' => true, 'cache' => false, 'strict_variables' => true, ], 'globals' => [ // определение глобальных переменных для всех шаблонов 'html' => 'yiihelpersHtml', ], 'uses' => ['yiiootstrap'], ], // ... ], ], |
1 2 3 4 5 6 7 |
{# Определение шаблона письма #} {% extends "layouts/html" %} {% block content %} <h1>Welcome {{ name }}!</h1> <p>Thank you for joining our site.</p> {% endblock %} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
use Yii; use yiiwebController; use yiihelpersHtml; class MailController extends Controller { public function actionWelcome() { $message = Yii::$app->mailer->compose(); $message->setTo('[email protected]') ->setFrom('[email protected]') ->setSubject('Welcome to our site') ->setHtmlBody(Yii::$app->view->render('mail/welcome', ['name' => 'John Doe'])); $message->send(); } } |
Вы можете передать любые данные в шаблон, используя массив, передаваемый вторым аргументом в функцию render()
. Кроме того, вы можете использовать глобальные переменные, определенные в настройках Twig.
Теперь, когда вы вызываете метод send()
на экземпляре yiimailMessage
, Yii2 будет использовать Twig для обработки шаблона письма, созданного вами.
@hermina.hauck
Отличное объяснение! Добавлю, что если вы хотите использовать Twig для других видов контента (не только для писем), например, для рендеринга представлений в вашем веб-приложении, вам нужно просто настроить Yii2 для использования Twig как основного шаблонизатора. Вам нужно будет указать Twig как рендерер по умолчанию в конфигурации приложения.
Для этого вам нужно изменить конфигурацию Yii2 в файле config/web.php
следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
'view' => [ 'class' => 'yiiwebView', 'defaultExtension' => 'twig', 'renderers' => [ 'twig' => [ 'class' => 'yii wigViewRenderer', // конфигурация Twig 'options' => ['auto_reload' => true], ], ], ], |
После этого вы сможете использовать Twig в ваших представлениях по всему приложению, а не только для писем.
Кроме того, не забудьте установить и настроить Yii2 SwiftMailer для отправки электронных писем, как это было расписано в первом ответе.