<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Iw2 &#187; YAML</title>
	<atom:link href="http://www.iw2.fr/tag/yaml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iw2.fr</link>
	<description>Veille techno, web 2.0, Symfony, Magento, Drupal, Gestion de projet...</description>
	<lastBuildDate>Tue, 23 Aug 2011 06:46:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Symfony unsetAllExcept + i18n = unsetAllExceptI18n</title>
		<link>http://www.iw2.fr/2009/09/15/symfony-unsetallexcept-i18n-unsetallexcepti18n/</link>
		<comments>http://www.iw2.fr/2009/09/15/symfony-unsetallexcept-i18n-unsetallexcepti18n/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 19:06:00 +0000</pubDate>
		<dc:creator>jmartin</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[formulaire]]></category>
		<category><![CDATA[YAML]]></category>

		<guid isPermaLink="false">http://www.iw2.fr/?p=11</guid>
		<description><![CDATA[Suite au commentaire de eddie sur l&#8217;article &#171;&#160;Symfony &#8211; Formulaire en plusieurs étapes&#160;&#187; voici un exemple d&#8217;un formulaire multilangue en plusieurs étapes. Petit rappel du contexte: symfony 1.2 + Doctrine Dans le fichier schema.yml Projet1Exemple: tableName: projet1_exemple actAs: I18n: fields: &#8230; <a href="http://www.iw2.fr/2009/09/15/symfony-unsetallexcept-i18n-unsetallexcepti18n/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite au commentaire de eddie sur l&#8217;article &laquo;&nbsp;Symfony &#8211; Formulaire en plusieurs étapes&nbsp;&raquo; voici un exemple d&#8217;un formulaire multilangue en plusieurs étapes.</p>
<p><img class="size-full wp-image-88 alignright" title="symfony-logo" src="http://www.iw2.dev/wp-content/uploads/2009/11/symfony-logo.gif" alt="symfony-logo" width="160" height="43" /></p>
<p>Petit rappel du contexte: symfony 1.2 + Doctrine</p>
<p>Dans le fichier schema.yml</p>
<pre class="brush: php; title: ;">
Projet1Exemple:
  tableName: projet1_exemple
  actAs:
    I18n:
      fields: [titre, description, mots]
  columns:
    id:
      type: integer(4)
      primary: true
      unsigned: true
      notnull: true
      autoincrement: true
    fichier:
      type: string(255)
      unique: true
      notnull: true
    type:
      type: enum
      values: ['image', 'video', 'audio', 'document']
      notnull: true
      default: image
    titre:
      type: string(255)
      description:
      type: string(4000)
    mots:
      type: string(4000)
</pre>
<p>Nous avons donc deux champs communs à toutes les langues : fichier et type. Et trois champs multilangues : titre, description mots.</p>
<p>L&#8217;idée consisterait à mettre dans une première étape uniquement les champs : fichier (commun), titre (multilangue) et description (multilangue).</p>
<p>Dans le fichier actions.class.php</p>
<pre class="brush: php; title: ;">
public function executeIndex(sfWebRequest $request) {
  $this-&gt;form = new Projet1ExempleForm()
}
</pre>
<p>Dans le fichier /lib/form/doctrine/BaseFormDoctrine.class.php, ajouter la fonction suivante :</p>
<pre class="brush: php; title: ;">
public function unsetAllExceptI18n($keepFields = array(), $cultures = array(), $keepFieldsI18n = array()) {
  $keepFields[] = $cultures;
  foreach ($this as $key =&gt; $value)
    $baseFields[] = $key;
  $temp = array_diff($baseFields, $keepFields);
  foreach ($temp as $unsetField)
    unset($this[$unsetField]);
  $embeds = $this-&gt;getEmbeddedForms();
  foreach ($cultures as $culture)
    $formsI18n[$culture] = $embeds[$culture];
  foreach ($formsI18n as $culture =&gt; $formI18n)
  {
    foreach ($formI18n as $key =&gt; $value)
      $baseFieldsI18n[] = $key;
    $temp = array_diff($baseFieldsI18n, $keepFieldsI18n);
    foreach ($temp as $unsetField)
      unset($formI18n[$unsetField]);
    unset($this[$culture]);
    $this-&gt;embedForm($culture, $formI18n);
  }
}
</pre>
<p>Explication des paramètres :</p>
<ul>
<li>- &nbsp;&raquo;$keepFieds&nbsp;&raquo; : un tableau des champs &#8216;commun&#8217; que vous souhaitez &laquo;&nbsp;garder&nbsp;&raquo;.</li>
<li>- &nbsp;&raquo;$cultures&nbsp;&raquo; : un tableau des différentes cultures que vous voulez utiliser.</li>
<li>- &nbsp;&raquo;$keepFieldsI18n&nbsp;&raquo; : un tableau des champs &#8216;multilangues&#8217; que vous souhaitez &laquo;&nbsp;garder&nbsp;&raquo;.</li>
</ul>
<p>Et enfin dans le fichier /lib/form/doctrine/Projet1ExempleForm.class.php</p>
<pre class="brush: php; title: ;">
class Projet1ExempleForm extends BaseProjet1ExempleForm {
  public function configure() {
    //Introduire les formulaires multilangues dans un premier temps
    $this-&gt;embedI18n(array('fr'));
    $this-&gt;embedI18n(array('en'));
    //Garder uniquement les champs dont vous avez besoin
    $this-&gt;unsetAllExceptI18n(array('fichier'), array('fr', 'en'), array('titre', 'description'));
  }
}
</pre>
<p>Et enfin dans votre template</p>
<pre class="brush: php; title: ;">
//Soit tout simplement
&lt;?php echo $form;?&gt;

//ou
&lt;?php echo $form['fichier']-&gt;renderLabel()?&gt;
&lt;?php echo $form['fichier']-&gt;render()?&gt;
&lt;?php echo $form['fr']['description']-&gt;renderLabel()?&gt;
&lt;?php echo $form['fr']['description']-&gt;render()?&gt;
//...
</pre>
<p>Voici un aperçu du résultat : <a class="highslide" href="http://www.iw2.dev/wp-content/uploads/2009/11/Capture_d_ecran_2009-09-15_a_19.25.01.png"><img class="aligncenter size-thumbnail wp-image-97" title="Capture_d_ecran_2009-09-15_a_19.25.01" src="http://www.iw2.fr/wp-content/uploads/2009/09/Capture_d_ecran_2009-09-15_a_19.25.01-150x150.png" alt="Capture_d_ecran_2009-09-15_a_19.25.01" width="150" height="150" /></a></p>
<p>Vous pouvez ensuite continuer de la même manière pour les prochaines étapes de votre formulaire.</p>
<p>N&#8217;hésitez pas à me solliciter pour plus d&#8217;explications.</p>
<p>To be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iw2.fr/2009/09/15/symfony-unsetallexcept-i18n-unsetallexcepti18n/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Framework Symfony</title>
		<link>http://www.iw2.fr/2009/08/04/framework-symfony/</link>
		<comments>http://www.iw2.fr/2009/08/04/framework-symfony/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 12:42:00 +0000</pubDate>
		<dc:creator>jmartin</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[YAML]]></category>

		<guid isPermaLink="false">http://www.iw2.fr/?p=9</guid>
		<description><![CDATA[Présentation Symfony est un framework PHP 5 qui permet d&#8217;accélérer les temps de développement d&#8217;applications Web. Il permet d&#8217;avoir un site robuste, évolutif, et sécurisé, garantissant la pérennité de votre application dans le temps. Spécifications Voici une liste non exhaustive &#8230; <a href="http://www.iw2.fr/2009/08/04/framework-symfony/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Présentation</h2>
<p>Symfony est un framework PHP 5 qui permet d&#8217;accélérer les temps de développement d&#8217;applications Web. Il permet d&#8217;avoir un site robuste, évolutif, et sécurisé, garantissant la pérennité de votre application dans le temps.</p>
<p><img class="aligncenter size-full wp-image-90" title="symfony-logo" src="http://www.iw2.dev/wp-content/uploads/2009/11/symfony-logo1.gif" alt="symfony-logo" width="200" height="54" /></p>
<h2>Spécifications</h2>
<p>Voici une liste non exhaustive de ce que propose le framework Symfony :</p>
<ul>
<li>- Model MVC</li>
<li>- Générateur de back-office</li>
<li>- Internationalisation</li>
<li>- ORM (Mapping objet-relationnel) embarqué : Doctrine ou Propel.</li>
<li>- Création et utilisation de plugins</li>
<li>- Système de cache</li>
<li>- Moteur d&#8217;URL rewriting performant</li>
<li>- Fichiers de configuration (Langage YAML)</li>
</ul>
<h2>Pourquoi le choix de ce framework?</h2>
<p>Je travaille actuellement dans une agence Web qui disposait jusqu&#8217;à présent de son propre framework maison. Actuellement en pleine expansion, nous avons pris la décision de migrer vers le framework Symfony pour plusieurs raisons:</p>
<ul>
<li>- Accélérer nos temps de développement.</li>
<li>- DRY (Don&#8217;t Repeat Yourself) : Ne pas réinventer la roue.</li>
<li>- Capitaliser notre expérience en exportant certaines briques de code sous forme de Plugins pour d&#8217;autres projets.</li>
<li>- Se concentrer plus sur l&#8217;aspect métier des applications à développer.</li>
<li>- Recruter plus facilement des développeurs utilisant ou connaissant Symfony plutôt que perdre du temps pour les former sur notre framework maison.</li>
</ul>
<h2>Prise en main de Symfony</h2>
<p>Je développe depuis quelques mois sous Symfony, et le chemin n&#8217;a pas toujours été facile&#8230; Je découvre et j&#8217;apprends tous les jours avec de framework qui ne cessera jamais de m&#8217;étonner. Voici quelques conseils à ceux qui souhaiterais se lancer dans ce framework :</p>
<ul>
<li>- Suivre le tutoriel Jobeet présent sur le site de Symfony (je vous conseille l&#8217;ORM Doctrine pour la simple et bonne raison qu&#8217;il sera en standard dans les nouvelles versions de Symfony). <a href="http://www.symfony-project.org/jobeet/1_2/Doctrine/en/" target="_blank">Tutoriel pour démarrer avec Symfony</a></li>
<li>- Pour le développement de vos applications, je vous conseille fortement l&#8217;utilisation d&#8217;un outil de débugger tel que xdebug ou zend debugger, permettant de comprendre la logique de Symfony notamment pour tout ce qui concerne la soumission des formulaires.</li>
<li>- Et enfin n&#8217;hésitez pas à faire appel à la communauté Symfony très active : <a href="http://groups.google.com/group/symfony-fr?pli=1" target="_blank">Groupe Google Symfony</a> et également <a href="irc://irc.freenode.net/symfony" target="_blank">Canal IRC Fr</a></li>
</ul>
<h2>Liens utiles</h2>
<p><a href="http://www.symfony-project.org/jobeet/1_2/Doctrine/en/" target="_blank">Site officiel Symfony<br />
Symfony sur Wikipedia<br />
Tutoriel pour démarrer avec Symfony</a><a href="http://fr.symfonians.net/" target="_blank"><br />
Centralisation des réalisations faites avec le framework Symfony </a></p>
<p>to be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iw2.fr/2009/08/04/framework-symfony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

