<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commentaires sur : Symfony et les templates de mail dynamiques</title>
	<atom:link href="http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/</link>
	<description>Veille techno, web 2.0, Symfony, Magento, Drupal, Gestion de projet...</description>
	<lastBuildDate>Wed, 01 Feb 2012 19:56:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>Par : Greg</title>
		<link>http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/#comment-31</link>
		<dc:creator>Greg</dc:creator>
		<pubDate>Sat, 04 Dec 2010 12:55:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.iw2.fr/?p=169#comment-31</guid>
		<description>Juste pour corriger hugo : dans le controller, il faut appeler getPartial a la place de renderPartial.</description>
		<content:encoded><![CDATA[<p>Juste pour corriger hugo : dans le controller, il faut appeler getPartial a la place de renderPartial.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Sam</title>
		<link>http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/#comment-30</link>
		<dc:creator>Sam</dc:creator>
		<pubDate>Sun, 07 Mar 2010 12:05:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.iw2.fr/?p=169#comment-30</guid>
		<description>Bonjour à tous,

petit correction,

setBody($this-&gt;renderPartial(’module/partial’, array(’var’ =&gt; ‘value’))

ne marche pas chez moi (symfony 1.4), après une recherche dans l&#039;api :

setBody($this-&gt;getPartial(’module/partial’, array(’var’ =&gt; ‘value’))

marche :D ! J&#039;espère que sa vous aidera !</description>
		<content:encoded><![CDATA[<p>Bonjour à tous,</p>
<p>petit correction,</p>
<p>setBody($this-&gt;renderPartial(’module/partial’, array(’var’ =&gt; ‘value’))</p>
<p>ne marche pas chez moi (symfony 1.4), après une recherche dans l&#8217;api :</p>
<p>setBody($this-&gt;getPartial(’module/partial’, array(’var’ =&gt; ‘value’))</p>
<p>marche <img src='http://www.iw2.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ! J&#8217;espère que sa vous aidera !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : admin</title>
		<link>http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/#comment-29</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Thu, 25 Feb 2010 08:55:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.iw2.fr/?p=169#comment-29</guid>
		<description>Merci pour ces précieuses informations! Je vais reprendre cette partie de mon code pour l&#039;améliorer.</description>
		<content:encoded><![CDATA[<p>Merci pour ces précieuses informations! Je vais reprendre cette partie de mon code pour l&#8217;améliorer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Hugo</title>
		<link>http://www.iw2.fr/2010/01/24/symfony-et-les-templates-de-mail-dynamiques/#comment-28</link>
		<dc:creator>Hugo</dc:creator>
		<pubDate>Sun, 14 Feb 2010 11:22:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.iw2.fr/?p=169#comment-28</guid>
		<description>Hello,

Très bon article dans l&#039;ensemble mais tu te compliques beaucoup la vie. Je vais apporter quelques éclaircissements et améliorations à apporter. D&#039;une part, ta classe Mailer ne sert strictement à rien si ce n&#039;est de rajouter de l&#039;abstraction inutile et de la complexité en plus. Tu peux t&#039;en passer. En plus, avec tes sfContext::getInstance() dedans, tu empêches ta classe d&#039;être testée unitairement.

Symfony permet de rendre un template partiel depuis une action à partir de la méthode $this-&gt;renderPartial(). Tu peux donc générer le contenu d&#039;un template partiel dans ton action en appelant cette méthode.

public function executeSendMail(sfWebRequest $request)
{
  $this-&gt;composeAndSend(
    &#039;from@example.com&#039;,
    &#039;to@example.com&#039;,
    &#039;Subject&#039;,
    $this-&gt;renderPartial(&#039;module/partial&#039;, array(&#039;var&#039; =&gt; &#039;value&#039;)
  );
}

Pour aller plus loin, Symfony a l&#039;avantage d&#039;intégrer un véritable support des mails. Avec Swift_Mailer, chaque mail est en réalité un objet Swift_Message. Tu peux donc créer une classe par mail qui dérive Swift_Message ou bien une superclasse abstraite pour partager les informations des mails. Par exemple :

// lib/email/MyApplicationMail.class.php
abstract class MyApplicationMail extends Swift_Message
{
  // Shared code
}

// lib/email/ForgottenPasswordMail.class.php
class ForgottenPasswordMail extends MyApplicationMail
{
  public function __construct(...)
  {
    parent::__construct(...);

    $this-&gt;setFrom(&#039;from@example.com&#039;);
    $this-&gt;setSubject(&#039;Your new password&#039;);
  }
}

Et dans ton action tu instancies ta classe :

public function executeSendMail(sfWebRequest $request)
{
  $mail = ForgottenPasswordMail::newInstance()-&gt;
    setTo(&#039;user@example.com&#039;)-&gt;
    setBody($this-&gt;renderPartial(&#039;module/partial&#039;, array(&#039;var&#039; =&gt; &#039;value&#039;))
  ;

  $this-&gt;getMailer()-&gt;send($mail);
}

Et voilà c&#039;est tout simple, extensible et testable.

Hugo.</description>
		<content:encoded><![CDATA[<p>Hello,</p>
<p>Très bon article dans l&#8217;ensemble mais tu te compliques beaucoup la vie. Je vais apporter quelques éclaircissements et améliorations à apporter. D&#8217;une part, ta classe Mailer ne sert strictement à rien si ce n&#8217;est de rajouter de l&#8217;abstraction inutile et de la complexité en plus. Tu peux t&#8217;en passer. En plus, avec tes sfContext::getInstance() dedans, tu empêches ta classe d&#8217;être testée unitairement.</p>
<p>Symfony permet de rendre un template partiel depuis une action à partir de la méthode $this-&gt;renderPartial(). Tu peux donc générer le contenu d&#8217;un template partiel dans ton action en appelant cette méthode.</p>
<p>public function executeSendMail(sfWebRequest $request)<br />
{<br />
  $this-&gt;composeAndSend(<br />
    &#8216;from@example.com&#8217;,<br />
    &#8216;to@example.com&#8217;,<br />
    &#8216;Subject&#8217;,<br />
    $this-&gt;renderPartial(&#8216;module/partial&#8217;, array(&#8216;var&#8217; =&gt; &#8216;value&#8217;)<br />
  );<br />
}</p>
<p>Pour aller plus loin, Symfony a l&#8217;avantage d&#8217;intégrer un véritable support des mails. Avec Swift_Mailer, chaque mail est en réalité un objet Swift_Message. Tu peux donc créer une classe par mail qui dérive Swift_Message ou bien une superclasse abstraite pour partager les informations des mails. Par exemple :</p>
<p>// lib/email/MyApplicationMail.class.php<br />
abstract class MyApplicationMail extends Swift_Message<br />
{<br />
  // Shared code<br />
}</p>
<p>// lib/email/ForgottenPasswordMail.class.php<br />
class ForgottenPasswordMail extends MyApplicationMail<br />
{<br />
  public function __construct(&#8230;)<br />
  {<br />
    parent::__construct(&#8230;);</p>
<p>    $this-&gt;setFrom(&#8216;from@example.com&#8217;);<br />
    $this-&gt;setSubject(&#8216;Your new password&#8217;);<br />
  }<br />
}</p>
<p>Et dans ton action tu instancies ta classe :</p>
<p>public function executeSendMail(sfWebRequest $request)<br />
{<br />
  $mail = ForgottenPasswordMail::newInstance()-&gt;<br />
    setTo(&#8216;user@example.com&#8217;)-&gt;<br />
    setBody($this-&gt;renderPartial(&#8216;module/partial&#8217;, array(&#8216;var&#8217; =&gt; &#8216;value&#8217;))<br />
  ;</p>
<p>  $this-&gt;getMailer()-&gt;send($mail);<br />
}</p>
<p>Et voilà c&#8217;est tout simple, extensible et testable.</p>
<p>Hugo.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

