示例#1
0
 public function load(ObjectManager $manager)
 {
     //annonces à ajouter
     //annonce d'Alexandre
     $advertAlex = new Advert();
     $advertAlex->setImage($this->getReference('image-jdr'));
     $advertAlex->setTitle('Recherche développeur Symfony2');
     $advertAlex->setAuthor('Alexandre');
     $advertAlex->setContent('Nous recherchons un développeur');
     $advertAlex->setSlug('recherche-developpeur');
     $advertAlex->setDate(new \Datetime());
     //annonce d'Hugo
     $advertHugo = new Advert();
     $advertHugo->setImage($this->getReference('image-af'));
     $advertHugo->setTitle('Mission de webmaster');
     $advertHugo->setAuthor('Hugo');
     $advertHugo->setContent('Nous recherchons un webmaster capable de maintenir notre site internet. Blabla…');
     $advertHugo->setSlug('mission-webmaster');
     $advertHugo->setDate(new \Datetime());
     //annonce de Mathieu
     $advertMat = new Advert();
     $advertMat->setImage($this->getReference('image-pa'));
     $advertMat->setTitle('Offre de stage webdesigner');
     $advertMat->setAuthor('Mathieu');
     $advertMat->setContent('Nous proposons un poste pour webdesigner. Blabla…');
     $advertMat->setSlug('stage-webdesigner');
     $advertMat->setDate(new \Datetime());
     // On la persiste
     $manager->persist($advertAlex);
     $manager->persist($advertHugo);
     $manager->persist($advertMat);
     // On déclenche l'enregistrement de toutes les catégories
     $manager->flush();
 }
 public function addAction(Request $request)
 {
     // On récupère l'EntityManager
     $em = $this->getDoctrine()->getManager();
     // La gestion d'un formulaire est particulière, mais l'idée est la suivante :
     //
     // $em = $this->getDoctrine()->getManager();
     //       $advert2 = $em->getRepository('OCPlatformBundle:Advert')->find('46b46640-d976-11e5-8bcc-080027716959');
     //
     //       // On modifie cette annonce, en changeant la date à la date d'aujourd'hui
     //       $advert2->setDate(new \Datetime());
     // 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…");
     // 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);
     $application1 = new Application();
     $application1->setAuthor('Romain');
     $application1->setContent('Test content');
     $application2 = new Application();
     $application2->setAuthor('John');
     $application2->setContent('Test content 2');
     $application1->setAdvert($advert);
     $application2->setAdvert($advert);
     // On récupère toutes les compétences possibles
     $listSkills = $em->getRepository('OCPlatformBundle: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);
     }
     $categories = $em->getRepository('OCPlatformBundle:Category')->findAll();
     foreach ($categories as $category) {
         $advert->addCategory($category);
     }
     // Étape 1 : On « persiste » l'entité
     $em->persist($advert);
     // Étape 1 bis : si on n'avait pas défini le cascade={"persist"},
     // on devrait persister à la main l'entité $image
     $em->persist($application1);
     $em->persist($application2);
     // Étape 2 : On déclenche l'enregistrement
     $em->flush();
     // 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->redirectToRoute('oc_platform_view', array('id' => $advert->getId()));
 }