Тело электронной почты в почтовой программе Symfony 1.4? - PullRequest
3 голосов
/ 13 февраля 2010

Я использую почтовую программу 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 не очень ясна в этом.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 17 марта 2010

Как насчет использования нативного метода, доступного внутри sfAction.

$ this-> getPartial ( 'partial_name'); который работает как частичные помощники для ваших шаблонов.

5 голосов
/ 13 февраля 2010

Я сохраняю тела сообщений в виде файла шаблона и отображаю их с помощью 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()

Шаблоны тела находятся в папке шаблонов модуля, но я уверен, что вы можете как-то изменить это, например. положите все шаблоны электронной почты в одну папку, если хотите.

...