Текст электронной почты в почтовой программе Symfony 1.4?
-
20-09-2019 - |
Вопрос
Я использую почтовую программу Symfony 1.4, где я создаю различные фрагменты, необходимые для электронного письма, а затем отправляю его с помощью:
$this->getMailer()->composeAndSend($sender, $recipient, $subject, $body);
В теле письма мне нужно иметь возможность использовать переменные, сгенерированные в действии, поэтому прямо сейчас я мог бы использовать это в своем действии:
$body = 'Your username is '.$username.' and this is the email body.';
Кто-нибудь знает элегантный способ хранения / организации различных тел электронной почты вместо того, чтобы кодировать их подобным образом прямо в моем действии?У меня будет много шаблонов электронной почты, а также они будут на нескольких языках.
Я нашел старый учебник Askeet, в котором обсуждается это, но он кажется несколько устаревшим из-за новой интеграции symfony 1.4 с SwiftMailer, и сама документация SwiftMailer не очень понятна по этому поводу.
Спасибо.
Решение
Я сохраняю тексты электронных писем в виде файла шаблона и визуализирую их с помощью sfPartialView
.Например.внутри действия:
$view = new sfPartialView($this->getContext(), $this->getModuleName(), $this->getActionName(), 'confirmation_mail');
$view->setTemplate('_confirmation_mail.php');
// values can be set e.g. by setAttibute
$view->setAttribute('name', $name);
$body = $view->render()
Шаблоны тела расположены в папке template модуля, но я уверен, что вы можете каким-то образом изменить это и, напримересли хотите, поместите все шаблоны электронной почты в одну папку.
Другие советы
Как насчет того, чтобы просто использовать собственный метод, доступный внутри sfAction.
$this->getPartial('частичное имя');который работает как частичные помощники для ваших шаблонов.