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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top