2010-02-12 4 views
3

: 전자 메일 본문에서Symfony 1.4 메일러의 이메일 본문? 내가 이메일에 필요한 다양한 비트를 구축 한 후 사용하여 발송 어디 심포니 1.4 메일러를 사용하고

$this->getMailer()->composeAndSend($sender, $recipient, $subject, $body); 

, 나는에서 생성 된 변수의 이점을 취할 수 필요 액션은, 지금 그래서 난 내 행동이있을 수 있습니다 :

$body = 'Your username is '.$username.' and this is the email body.'; 

사람이 여러 이메일 몸을 조직/저장하는 대신 내 행동에 바로이처럼 코딩해야하는 우아한 방법을 알고 있나요 ? 나는 많은 이메일 템플릿을 가지고 있으며 또한 여러 언어로 그들을 가질 것입니다.

이전 Askeet 튜토리얼에서이 문제를 논의했지만 SwiftMailer와의 새로운 symfony 1.4 통합으로 다소 오래된 것으로 보입니다. SwiftMailer 문서 자체는 이에 대해 명확하지 않습니다.

감사합니다.

답변

5

이메일 본문을 템플릿 파일로 저장하고 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() 

몸 템플릿이 모듈의 템플릿 폴더에있는,하지만 난 당신이 어떻게 든이를 변경하고, 예를 들어 수 있습니다 확신하고 있습니다 원하는 경우 모든 이메일 템플릿을 하나의 폴더에 저장하십시오.

+0

정말 감사합니다. 그리고 예, 당신은 단지 $ view-> setTemplate ('../../ emails/email')을 상대 경로와 함께 사용하여 한 곳에서 모두 저장할 수 있다고 생각합니다. – Tom

5

sfAction 내에서 사용할 수있는 원시 메소드를 사용하는 방법은 어떻습니까?

$ this-> getPartial ('partial_name'); 템플릿에 대한 부분 헬퍼와 같이 작동합니다.

+0

@Henrik : 마지막으로 몇 가지 다른 방법을 테스트 해 보았습니다. 이 대답은 실제로 변수를 전달할 수있는 간단한 방법이며, 이메일 본문을 단일 위치에 저장할 수 있습니다. $ body = $ this-> getPartial ('emails/someEmailPartial', array ('var1'=> $ var1, 'var2'=> $ var2)); – Tom