<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://www.e-glop.net/index.php?action=history&amp;feed=atom&amp;title=Symfony_et_les_exports_CSV_%28Doctrine%29</id>
	<title>Symfony et les exports CSV (Doctrine) - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://www.e-glop.net/index.php?action=history&amp;feed=atom&amp;title=Symfony_et_les_exports_CSV_%28Doctrine%29"/>
	<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;action=history"/>
	<updated>2026-05-16T22:42:59Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2385&amp;oldid=prev</id>
		<title>BeTa : /* apps/rp/modules/contact/templates/_csv_line.php */</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2385&amp;oldid=prev"/>
		<updated>2013-04-08T19:37:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;apps/rp/modules/contact/templates/_csv_line.php&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 8 avril 2013 à 19:37&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l109&quot;&gt;Ligne 109 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 109 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     ob_flush();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     ob_flush();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[Catégorie:Informatique]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;[Catégorie:Informatique&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BeTa</name></author>
	</entry>
	<entry>
		<id>http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2357&amp;oldid=prev</id>
		<title>BeTa le 24 octobre 2012 à 11:09</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2357&amp;oldid=prev"/>
		<updated>2012-10-24T11:09:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 24 octobre 2012 à 11:09&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;Ligne 108 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 108 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     fputcsv($outstream, $line, $delimiter, $enclosure);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     fputcsv($outstream, $line, $delimiter, $enclosure);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     ob_flush();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     ob_flush();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[Catégorie:Informatique]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BeTa</name></author>
	</entry>
	<entry>
		<id>http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2278&amp;oldid=prev</id>
		<title>BeTa : /* Introduction */</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2278&amp;oldid=prev"/>
		<updated>2011-01-11T16:44:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Introduction&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 11 janvier 2011 à 16:44&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Ligne 5 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 5 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La module correspondant à &amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039; est &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; dans l&amp;#039;application &amp;#039;&amp;#039;&amp;#039;rp&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; a été créé via &amp;#039;&amp;#039;doctrine:generate-admin&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La module correspondant à &amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039; est &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; dans l&amp;#039;application &amp;#039;&amp;#039;&amp;#039;rp&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; a été créé via &amp;#039;&amp;#039;doctrine:generate-admin&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;L&#039;idée est d&#039;extraire les informations qui sont présentées dans la liste des enregistrements, éventuellement filtrée sur certains critères tout en profitant de l&#039;optimisation &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;de &lt;/del&gt;la requête &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;effectuée&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;L&#039;idée est d&#039;extraire les informations qui sont présentées dans la liste des enregistrements, éventuellement filtrée sur certains critères tout en profitant de l&#039;optimisation &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;éventuelle déjà effectuée sur &lt;/ins&gt;la requête &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;générique&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Préparation dans le view.yml ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Préparation dans le view.yml ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BeTa</name></author>
	</entry>
	<entry>
		<id>http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2277&amp;oldid=prev</id>
		<title>BeTa le 11 janvier 2011 à 16:43</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Symfony_et_les_exports_CSV_(Doctrine)&amp;diff=2277&amp;oldid=prev"/>
		<updated>2011-01-11T16:43:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Considérons le modèle &amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039; qui est relié au modème &amp;#039;&amp;#039;&amp;#039;Organism&amp;#039;&amp;#039;&amp;#039; par une relation many-to-many via le modèle &amp;#039;&amp;#039;&amp;#039;Professional&amp;#039;&amp;#039;&amp;#039;. Nous souhaitons faire une extraction CSV des contacts avec leurs relations éventuelles.&lt;br /&gt;
&lt;br /&gt;
La module correspondant à &amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039; est &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; dans l&amp;#039;application &amp;#039;&amp;#039;&amp;#039;rp&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;&amp;#039;contact&amp;#039;&amp;#039;&amp;#039; a été créé via &amp;#039;&amp;#039;doctrine:generate-admin&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;idée est d&amp;#039;extraire les informations qui sont présentées dans la liste des enregistrements, éventuellement filtrée sur certains critères tout en profitant de l&amp;#039;optimisation de la requête effectuée.&lt;br /&gt;
&lt;br /&gt;
== Préparation dans le view.yml ==&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;#039;&amp;#039;&amp;#039;apps/rp/modules/contact/config/view.yml&amp;#039;&amp;#039;&amp;#039;, &lt;br /&gt;
&lt;br /&gt;
 csvSuccess:&lt;br /&gt;
   has_layout: off&lt;br /&gt;
   http_metas:&lt;br /&gt;
     content-type: text/comma-separated-values&lt;br /&gt;
     content-disposition: attachment; filename=&amp;quot;contacts-list.csv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== L&amp;#039;action ==&lt;br /&gt;
&lt;br /&gt;
=== Directement dans le vif du sujet ===&lt;br /&gt;
&lt;br /&gt;
dans le fichier &amp;#039;&amp;#039;&amp;#039;apps/rp/modules/actions/actions.php&amp;#039;&amp;#039;&amp;#039;, créer la méthode &amp;#039;&amp;#039;&amp;#039;executeCsv()&amp;#039;&amp;#039;&amp;#039; de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  public function executeCsv(sfWebRequest $request)&lt;br /&gt;
  {&lt;br /&gt;
    ∕/ to modify the CSV output format in case of extreme necessity&lt;br /&gt;
    $this-&amp;gt;options = array(&amp;#039;ms&amp;#039; =&amp;gt; $request-&amp;gt;hasParameter(&amp;#039;ms&amp;#039;));&lt;br /&gt;
    &lt;br /&gt;
    $q = $this-&amp;gt;buildQuery();&lt;br /&gt;
    $a = $q-&amp;gt;getRootAlias();&lt;br /&gt;
    $q-&amp;gt;leftJoin(&amp;quot;$a.Organisms&amp;quot;)&lt;br /&gt;
      -&amp;gt;select(&amp;quot;$a.title, $a.name, $a.firstname, $a.address, $a.postalcode, $a.city, $a.country&amp;quot;)&lt;br /&gt;
      -&amp;gt;addSelect(&amp;quot;o.address AS organism_address, o.postalcode AS organism_postalcode, o.city AS organism_city, o.country AS organism_country&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    // -&amp;gt;fetchArray() to avoid big big memory usage&lt;br /&gt;
    $this-&amp;gt;lines = $q-&amp;gt;fetchArray();&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;outstream = &amp;#039;php://output&amp;#039;;&lt;br /&gt;
    $this-&amp;gt;delimiter = $request-&amp;gt;hasParameter(&amp;#039;ms&amp;#039;) ? &amp;#039;;&amp;#039; : &amp;#039;,&amp;#039;;&lt;br /&gt;
    $this-&amp;gt;enclosure = &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
    $this-&amp;gt;charset   = array(&amp;#039;db&amp;#039; =&amp;gt; &amp;#039;UTF-8&amp;#039;, &amp;#039;ms&amp;#039; =&amp;gt; &amp;#039;WINDOWS-1252//TRANSLIT&amp;#039;);&lt;br /&gt;
    &lt;br /&gt;
    sfConfig::set(&amp;#039;sf_web_debug&amp;#039;, false);&lt;br /&gt;
    sfConfig::set(&amp;#039;sf_escaping_strategy&amp;#039;, false);&lt;br /&gt;
    sfConfig::set(&amp;#039;sf_charset&amp;#039;, $this-&amp;gt;options[&amp;#039;ms&amp;#039;] ? $this-&amp;gt;charset[&amp;#039;ms&amp;#039;] : $this-&amp;gt;charset[&amp;#039;db&amp;#039;]);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Les subtilités ===&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;exemple utilisé actuellement n&amp;#039;est pas très très révélateur des difficultés auxquelles on peut être confronté dans le cas de schémas de données beaucoup beaucoup plus complexes. Cela dit, quelques précaution vous épargeront pas mal de temps :&lt;br /&gt;
&lt;br /&gt;
* préciser les champs du &amp;#039;&amp;#039;&amp;#039;select&amp;#039;&amp;#039;&amp;#039; de votre DQL&lt;br /&gt;
* récupérer les résultats de la requête dans un tableau via &amp;#039;&amp;#039;&amp;#039;Doctrine_Query::fetchArray()&amp;#039;&amp;#039;&amp;#039; comme vu dans le code précédent&lt;br /&gt;
&lt;br /&gt;
Notez également que selon la manière dont vous construirez votre &amp;#039;&amp;#039;Doctrine_Query&amp;#039;&amp;#039; dans les &amp;#039;&amp;#039;&amp;#039;-&amp;gt;select()&amp;#039;&amp;#039;&amp;#039; et &amp;#039;&amp;#039;&amp;#039;-&amp;gt;addSelect()&amp;#039;&amp;#039;&amp;#039;, vous présenterez les choses différemment dans votre fichier CSV final.&lt;br /&gt;
&lt;br /&gt;
== La vue (templates) ==&lt;br /&gt;
&lt;br /&gt;
=== apps/rp/modules/contact/templates/csvSuccess.php ===&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;#039;&amp;#039;&amp;#039;apps/rp/modules/contact/templates/csvSuccess.php&amp;#039;&amp;#039;&amp;#039; (que vous créerez), voilà ce qui peut convenir (il est aussi possible de créer un &amp;#039;&amp;#039;partial&amp;#039;&amp;#039; propre voire même de le placer directement dans &amp;#039;&amp;#039;&amp;#039;apps/rp/templates/&amp;#039;&amp;#039;&amp;#039; pour plus de généricité) :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
  $outstream = fopen($outstream, &amp;#039;w&amp;#039;);&lt;br /&gt;
  &lt;br /&gt;
  $vars = array(&lt;br /&gt;
    &amp;#039;options&amp;#039;   =&amp;gt; $options,&lt;br /&gt;
    &amp;#039;delimiter&amp;#039; =&amp;gt; $delimiter,&lt;br /&gt;
    &amp;#039;enclosure&amp;#039; =&amp;gt; $enclosure,&lt;br /&gt;
    &amp;#039;outstream&amp;#039; =&amp;gt; $outstream,&lt;br /&gt;
    &amp;#039;charset&amp;#039;   =&amp;gt; $charset,&lt;br /&gt;
    &amp;#039;lines&amp;#039;     =&amp;gt; $lines));&lt;br /&gt;
  &lt;br /&gt;
  // header&lt;br /&gt;
  if ( count($lines) &amp;gt; 0 )&lt;br /&gt;
  include_partial(&amp;#039;contact/csv_headers&amp;#039;,$vars);&lt;br /&gt;
  &lt;br /&gt;
  // content&lt;br /&gt;
  foreach ( $lines as $line )&lt;br /&gt;
  {&lt;br /&gt;
    unset($line[&amp;#039;id&amp;#039;]);&lt;br /&gt;
    include_partial(&amp;#039;contact/csv_line&amp;#039;,array_merge(array(&amp;#039;line&amp;#039; =&amp;gt; $line),$vars));&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  fclose($outstream);&lt;br /&gt;
&lt;br /&gt;
=== apps/rp/modules/contact/templates/_csv_headers.php ===&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;#039;&amp;#039;&amp;#039;apps/rp/modules/contact/templates/_csv_headers.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
    &lt;br /&gt;
    $line = array_keys($lines[0]);&lt;br /&gt;
    if ( $options[&amp;#039;ms&amp;#039;] )&lt;br /&gt;
    foreach ( $line as $key =&amp;gt; $value )&lt;br /&gt;
      $line[$key] = @iconv($charset[&amp;#039;db&amp;#039;], $charset[&amp;#039;ms&amp;#039;], $value);&lt;br /&gt;
    &lt;br /&gt;
    fputcsv($outstream, $line, $delimiter, $enclosure);&lt;br /&gt;
    ob_flush();&lt;br /&gt;
&lt;br /&gt;
=== apps/rp/modules/contact/templates/_csv_line.php ===&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;#039;&amp;#039;&amp;#039;apps/rp/modules/contact/templates/_csv_line.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    if ( $options[&amp;#039;ms&amp;#039;] )&lt;br /&gt;
    foreach ( $line as $key =&amp;gt; $value )&lt;br /&gt;
      $line[$key] = @iconv($charset[&amp;#039;db&amp;#039;], $charset[&amp;#039;ms&amp;#039;], $value);&lt;br /&gt;
    &lt;br /&gt;
    fputcsv($outstream, $line, $delimiter, $enclosure);&lt;br /&gt;
    ob_flush();&lt;/div&gt;</summary>
		<author><name>BeTa</name></author>
	</entry>
</feed>