Corpo do email no mailer do Symfony 1.4?
-
20-09-2019 - |
Pergunta
Estou usando o mailer Symfony 1.4, onde construo os vários bits necessários para um email e depois o envio usando:
$this->getMailer()->composeAndSend($sender, $recipient, $subject, $body);
No corpo do email, preciso aproveitar as variáveis geradas na ação, então agora posso ter isso na minha ação:
$body = 'Your username is '.$username.' and this is the email body.';
Alguém conhece uma maneira elegante de armazenar/organizar vários corpos de e-mail, em vez de codificá-los assim diretamente na minha ação?Terei muitos modelos de e-mail e também em vários idiomas.
Eu encontrei um antigo tutorial do Askeet discutindo isso, mas parece um pouco desatualizado com a nova integração do symfony 1.4 com o SwiftMailer, e a documentação do SwiftMailer em si não é muito clara sobre isso.
Obrigado.
Solução
Eu armazeno os corpos dos e-mails como um arquivo de modelo e os renderizo via sfPartialView
.Por exemplo.dentro de uma ação:
$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()
Os modelos de corpo estão localizados na pasta de modelos do módulo, mas tenho certeza que você pode alterar isso de alguma forma e, por exemplo.coloque todos os modelos de e-mail em uma pasta, se desejar.
Outras dicas
Que tal usar apenas o método nativo disponível dentro do sfAction.
$this->getPartial('nome_parcial');que funciona como ajudantes parciais para seus modelos.