public function addAction(Request $request)
 {
     // Création de l'entité Advert
     $advert = new Advert();
     $advert->setTitle('Recherche développeur Symfony2.');
     $advert->setAuthor('Alexandre');
     $advert->setContent("Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…");
     // On peut ne pas définir ni la date ni la publication, car ces attributs sont définis automatiquement dans le constructeur
     // Création de l'entité Image
     $image = new Image();
     $image->setUrl('http://sdz-upload.s3.amazonaws.com/prod/upload/job-de-reve.jpg');
     $image->setAlt('Job de rêve');
     // On lie l'image à l'annonce
     $advert->setImage($image);
     // Création d'une première candidature (la date est définit dans le constructeur et l'id est ajouter automatiquement)
     $application1 = new Application();
     $application1->setAuthor('Marine');
     $application1->setContent("J'ai toutes les qualités requises.");
     // Création d'une deuxième candidature par exemple
     $application2 = new Application();
     $application2->setAuthor('Pierre');
     $application2->setContent("Je suis très motivé.");
     // On lie les candidatures à l'annonce (une annonce peut contenir plusieurs candidatures)
     $application1->setAdvert($advert);
     $application2->setAdvert($advert);
     // On récupère l'EntityManager
     $em = $this->getDoctrine()->getManager();
     // On récupère toutes les compétences possibles
     $listSkills = $em->getRepository('KaiimPlatformBundle:Skill')->findAll();
     // Pour chaque compétence
     foreach ($listSkills as $skill) {
         // On crée une nouvelle « relation entre 1 annonce et 1 compétence »
         $advertSkill = new AdvertSkill();
         // On la lie à l'annonce, qui est ici toujours la même
         $advertSkill->setAdvert($advert);
         // On la lie à la compétence, qui change ici dans la boucle foreach
         $advertSkill->setSkill($skill);
         // Arbitrairement, on dit que chaque compétence est requise au niveau 'Expert'
         $advertSkill->setLevel('Expert');
         // Et bien sûr, on persiste cette entité de relation, propriétaire des deux autres relations
         $em->persist($advertSkill);
     }
     // Étape 1 a : On « persiste » l'entité $advert(pour dire que cette entité est gérée par Doctrine)
     // il est inutile de faire un persist($entity) lorsque $entity a été récupérée grâce à Doctrine
     $em->persist($advert);
     // Étape 1 b : si on n'avait pas défini le cascade={"persist"} dans l'entité Advert, on devrait persister à la main l'entité $image
     // $em->persist($image);
     // Etape 1 c : on persist les entités $application1 et $application2
     $em->persist($application1);
     $em->persist($application2);
     // Étape 2 : On « flush » tout ce qui a été persisté avant (sauvegarde des entités)
     $em->flush();
     // La gestion d'un formulaire est particulière, mais l'idée est la suivante :
     // Si la requête est en POST, c'est que le visiteur a soumis le formulaire
     if ($request->isMethod('POST')) {
         // Ici, on s'occupera de la création et de la gestion du formulaire
         $request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');
         // Puis on redirige vers la page de visualisation de cettte annonce
         return $this->redirect($this->generateUrl('kaiim_platform_view', array('id' => $advert->getId())));
     }
     // Si on n'est pas en POST, alors on affiche le formulaire
     return $this->render('KaiimPlatformBundle:Advert:add.html.twig');
 }
 /**
  * {@inheritDoc}
  */
 public function getAlt()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAlt', array());
     return parent::getAlt();
 }