<?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=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1</id>
	<title>Pouvoir retrouver des liens entre applications avec Symfony1 - 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=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1"/>
	<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;action=history"/>
	<updated>2026-05-21T18:14:15Z</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=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=3089&amp;oldid=prev</id>
		<title>BeTa : /* Solution */</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=3089&amp;oldid=prev"/>
		<updated>2024-06-14T13:12:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Solution&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 14 juin 2024 à 13:12&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-l12&quot;&gt;Ligne 12 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 12 :&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;  /**&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;  /**&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;   * @author Olivier Mansour&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;   * @author Olivier Mansour&lt;/div&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;   * @author Baptiste &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Simon&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;   * @author Baptiste&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;   * @author Libre Informatique [http://www.libre-informatique.fr/]&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;   * @author Libre Informatique [http://www.libre-informatique.fr/]&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;   */&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;   */&lt;/div&gt;&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-l20&quot;&gt;Ligne 20 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 20 :&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;   *&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;   *&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;   * @author Olivier Mansour&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;   * @author Olivier Mansour&lt;/div&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;   * @author Baptiste &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Simon&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;   * @author Baptiste&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;   * @author Libre Informatique [http://www.libre-informatique.fr/]&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;   * @author Libre Informatique [http://www.libre-informatique.fr/]&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;   *&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;   *&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=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=2408&amp;oldid=prev</id>
		<title>BeTa : /* Limitations et mises en garde */</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=2408&amp;oldid=prev"/>
		<updated>2013-06-13T12:21:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Limitations et mises en garde&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 13 juin 2013 à 12:21&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-l89&quot;&gt;Ligne 89 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 89 :&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;== Limitations et mises en garde ==&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;== Limitations et mises en garde ==&lt;/div&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;Par contre, attention : chaque reconstruction d&#039;environnement pour une application différente reparamètre la variable de configuration &#039;&#039;&#039;sf_csrf_secret&#039;&#039;&#039;. Deux solutions à cela :&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;Par contre, attention : chaque reconstruction d&#039;environnement pour une application différente reparamètre la variable de configuration &#039;&#039;&#039;sf_csrf_secret&#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, entraînant automatiquement le risque de la levée d&#039;une exception dans vos formulaires, en particulier ceux issus des modules &#039;&#039;doctrine:generate-admin&#039;&#039; lors des actions de leur liste&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;/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;Deux solutions à cela :&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;* soit vous paramétrez chacune de vos applications Symfony1 avec la même clé &amp;#039;&amp;#039;&amp;#039;csrf_secret&amp;#039;&amp;#039;&amp;#039; dans votre fichier app/*/config/settings.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;* soit vous paramétrez chacune de vos applications Symfony1 avec la même clé &amp;#039;&amp;#039;&amp;#039;csrf_secret&amp;#039;&amp;#039;&amp;#039; dans votre fichier app/*/config/settings.yml&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;* soit vous devrez préciser, afin d&amp;#039;être certain d&amp;#039;éviter les bugs, une clé secrète pour chacun de vos &amp;#039;&amp;#039;&amp;#039;sfForm&amp;#039;&amp;#039;&amp;#039; utilisant la protection contre les attaques &amp;#039;&amp;#039;CSRF&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;* soit vous devrez préciser, afin d&amp;#039;être certain d&amp;#039;éviter les bugs, une clé secrète pour chacun de vos &amp;#039;&amp;#039;&amp;#039;sfForm&amp;#039;&amp;#039;&amp;#039; utilisant la protection contre les attaques &amp;#039;&amp;#039;CSRF&amp;#039;&amp;#039;.&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=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=2407&amp;oldid=prev</id>
		<title>BeTa : Page créée avec « == Problématique == Vous avez bâti une application web modulaire, se déclinant en plusieurs &quot;applications Symfony1&quot;. Cependant, vos différents modules sont amenés à ... »</title>
		<link rel="alternate" type="text/html" href="http://www.e-glop.net/index.php?title=Pouvoir_retrouver_des_liens_entre_applications_avec_Symfony1&amp;diff=2407&amp;oldid=prev"/>
		<updated>2013-06-13T12:19:55Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « == Problématique == Vous avez bâti une application web modulaire, se déclinant en plusieurs &amp;quot;applications Symfony1&amp;quot;. Cependant, vos différents modules sont amenés à ... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Problématique ==&lt;br /&gt;
Vous avez bâti une application web modulaire, se déclinant en plusieurs &amp;quot;applications Symfony1&amp;quot;. Cependant, vos différents modules sont amenés à s&amp;#039;utiliser les uns les autres, à se connecter via des liens ou des appels Ajax par exemple... et vous n&amp;#039;avez aucun moyen dans Symfony1 pour créer des liens inter-applications.&lt;br /&gt;
&lt;br /&gt;
Voyons ce que nous pouvons faire pour y remédier...&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
Nous allons donc chercher une solution pour créer des liens cross-applications. Nous allons donc créer un nouveau helper s&amp;#039;inspirant du UrlHelper, et nous allons l&amp;#039;appeler CrossAppUrlHelper :&lt;br /&gt;
&lt;br /&gt;
 // lib/helper/CrossAppUrlHelper.php&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 /**&lt;br /&gt;
  * @author Olivier Mansour&lt;br /&gt;
  * @author Baptiste Simon&lt;br /&gt;
  * @author Libre Informatique [http://www.libre-informatique.fr/]&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * return an url for a given symfony application and an internal url&lt;br /&gt;
  *&lt;br /&gt;
  * @author Olivier Mansour&lt;br /&gt;
  * @author Baptiste Simon&lt;br /&gt;
  * @author Libre Informatique [http://www.libre-informatique.fr/]&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $appname&lt;br /&gt;
  * @param string $url&lt;br /&gt;
  * @param boolean $absolute&lt;br /&gt;
  * @param string $env&lt;br /&gt;
  * @param boolean $debug&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 function cross_app_url_for($appname, $url, $absolute = false, $env = null, $debug = false)&lt;br /&gt;
 {&lt;br /&gt;
   global $user;&lt;br /&gt;
   $user = sfContext::getInstance()-&amp;gt;getUser();&lt;br /&gt;
   &lt;br /&gt;
   $initial_app = sfContext::getInstance()-&amp;gt;getConfiguration()-&amp;gt;getApplication();&lt;br /&gt;
   $initial_web_controler = basename(sfContext::getInstance()-&amp;gt;getRequest()-&amp;gt;getScriptName());&lt;br /&gt;
   $initial_config = sfConfig::getAll();&lt;br /&gt;
   // get the environment&lt;br /&gt;
   if (is_null($env))&lt;br /&gt;
   {&lt;br /&gt;
     $env = sfContext::getInstance()-&amp;gt;getConfiguration()-&amp;gt;getEnvironment();&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   // context creation&lt;br /&gt;
   if (!sfContext::hasInstance($appname))&lt;br /&gt;
   {&lt;br /&gt;
     $context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($appname, $env,  $debug), $appname);&lt;br /&gt;
   }&lt;br /&gt;
   else&lt;br /&gt;
   {&lt;br /&gt;
     $context = sfContext::getInstance($appname);&lt;br /&gt;
   }&lt;br /&gt;
   $web_url = $context-&amp;gt;getController()-&amp;gt;genUrl($url, $absolute);&lt;br /&gt;
   sfContext::switchTo($initial_app);&lt;br /&gt;
   sfConfig::add($initial_config);&lt;br /&gt;
   unset($context);&lt;br /&gt;
 &lt;br /&gt;
   //remove initial web controler&lt;br /&gt;
   // genUrl use $this-&amp;gt;context-&amp;gt;getRequest()-&amp;gt;getScriptName();, its a call to $_SERVER&lt;br /&gt;
   // so starting the shameless part !&lt;br /&gt;
   $script_name = $appname;&lt;br /&gt;
   if (($env != &amp;#039;prod&amp;#039;) and $env)&lt;br /&gt;
   {&lt;br /&gt;
     $script_name.=&amp;#039;_&amp;#039;.$env;&lt;br /&gt;
   }&lt;br /&gt;
   elseif ($script_name == &amp;quot;frontend&amp;quot;)&lt;br /&gt;
   {&lt;br /&gt;
     $script_name=&amp;quot;index&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   $script_name.=&amp;#039;.php&amp;#039;;&lt;br /&gt;
   // check if this file exist&lt;br /&gt;
   if (!file_exists(sfConfig::get(&amp;#039;sf_web_dir&amp;#039;).DIRECTORY_SEPARATOR.$script_name))&lt;br /&gt;
     throw new sfException(&amp;#039;can t find &amp;#039;.$script_name.&amp;#039; in the web directory&amp;#039;);&lt;br /&gt;
   $web_url = str_replace ($initial_web_controler, $script_name, $web_url);&lt;br /&gt;
 &lt;br /&gt;
   return $web_url;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function cross_app_link_to($text, $appname, $url, $absolute = false, $env = null, $debug = false, $params = &amp;#039;&amp;#039;)&lt;br /&gt;
 {&lt;br /&gt;
   return &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.cross_app_url_for($appname, $url, $absolute, $env, $debug).&amp;#039;&amp;quot; &amp;#039;.$params.&amp;#039;&amp;gt;&amp;#039;.$text.&amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Cette solution est relativement pratique et s&amp;#039;utilise de manière assez similaire à ce que peut proposer le UrlHelper originel.&lt;br /&gt;
&lt;br /&gt;
Nous l&amp;#039;avons adaptée de la proposition d&amp;#039;Olivier Mansour en l&amp;#039;optimisant afin d&amp;#039;éviter la multiplication des requêtes et des constructions d&amp;#039;environnements.&lt;br /&gt;
&lt;br /&gt;
== Limitations et mises en garde ==&lt;br /&gt;
Par contre, attention : chaque reconstruction d&amp;#039;environnement pour une application différente reparamètre la variable de configuration &amp;#039;&amp;#039;&amp;#039;sf_csrf_secret&amp;#039;&amp;#039;&amp;#039;. Deux solutions à cela :&lt;br /&gt;
* soit vous paramétrez chacune de vos applications Symfony1 avec la même clé &amp;#039;&amp;#039;&amp;#039;csrf_secret&amp;#039;&amp;#039;&amp;#039; dans votre fichier app/*/config/settings.yml&lt;br /&gt;
* soit vous devrez préciser, afin d&amp;#039;être certain d&amp;#039;éviter les bugs, une clé secrète pour chacun de vos &amp;#039;&amp;#039;&amp;#039;sfForm&amp;#039;&amp;#039;&amp;#039; utilisant la protection contre les attaques &amp;#039;&amp;#039;CSRF&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Crédits ==&lt;br /&gt;
Nous nous sommes inspirés dans cette solution de différents articles trouvés sur la toile, et en particulier de la solution d&amp;#039;Olivier Mansour. Cela datant de plusieurs années, nous n&amp;#039;avons pas fait l&amp;#039;effort de retrouver les liens correspondant, pardonnez-nous. Afin d&amp;#039;être cités dans cet article, comme il nous semblerait naturel le faire, n&amp;#039;hésitez pas à nous contacter pour ce faire : beta_AT_e-glop_DOT_net !&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Informatique]]&lt;/div&gt;</summary>
		<author><name>BeTa</name></author>
	</entry>
</feed>