示例#1
0
 public function ajouterFilmLivreAction($type, $id, Request $requeteUtilisateurF, Request $requeteUtilisateurL)
 {
     // Contrôle d'accès sur cette action métier
     if (false === $this->get('security.context')->isGranted('ROLE_USER')) {
         throw new AccessDeniedException();
     }
     // je charge mon repository de Oeuvre pour executer une requete sur la BD
     $repositoryOeuvres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Oeuvre');
     // j'execute la requete perso pour remplir un tableau de oeuvre en accord avec le formulaire de page d'acceuil
     $oeuvre = $repositoryOeuvres->findById($id);
     $obj = $oeuvre;
     // je prepare mes formulaires !!!
     // Tableau dans lequel les données du formulaire seront recueillies
     $tabFilm = array();
     $tabLivre = array();
     switch ($type) {
         case 'monFilm':
             // code...
             // Créateur formulaire FILM
             $formFilm = $this->createFormBuilder($tabFilm)->add('Acteur', 'collection', array('label' => null, 'type' => new ActeurType(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false, 'query_builder' => function (EntityRepository $er) {
                 return $er->createQueryBuilder('a')->groupBy('a.prenom')->orderBy('a.prenom', 'ASC');
             }))->add('Realisateur', new RealisateurType(), array('label' => 'Realisateur'))->add('Type', 'entity', array('label' => 'Type', 'class' => 'NarratioWebOeuvresBundle:Type', 'property' => 'intitule', 'multiple' => false, 'expanded' => false))->add('Synopsis', 'textarea', array('label' => 'Synopsis'))->add('Annee', 'text', array('label' => 'Annee de parution'))->add('Duree', 'integer', array('label' => 'Duree du film'))->add('Image', 'url', array('label' => 'Image du film'))->add('Titre', 'text', array('label' => 'Titre du film'))->getForm();
             $monForm = $formFilm;
             break;
         case 'monLivre':
             // code...
             // Créateur formulaire LIVRE
             $formLivre = $this->createFormBuilder($tabLivre)->add('Resume', 'textarea', array('label' => 'Resume'))->add('Annee', 'text', array('label' => 'Annee de parution'))->add('Auteur', 'collection', array('label' => null, 'type' => new AuteurType(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))->add('Editeur', new EditeurType(), array('label' => 'Editeur'))->add('Image', 'url', array('label' => 'Image du livre'))->add('Titre', 'text', array('label' => 'Titre du livre'))->getForm();
             $monForm = $formLivre;
             break;
     }
     if ($this->getRequest()->get('action-type-livre') == 'Valider') {
         $formLivre->handleRequest($requeteUtilisateurL);
         $tabLivre = $formLivre->getData();
         // je recup mes variables
         $Resume = $tabLivre['Resume'];
         $image = $tabLivre['Image'];
         $Annee = $tabLivre['Annee'];
         $Titre = $tabLivre['Titre'];
         $editeur = $tabLivre['Editeur'];
         $auteurs = $tabLivre['Auteur'];
         $livre = new Livre();
         $Image = new Image();
         $Image->setUrl($image);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($Image);
         $gestionnaireEntite->flush();
         $p = 0;
         for ($p = 0; $p < count($auteurs); $p++) {
             $Auteur = new Auteur();
             $Auteur = $auteurs[$p];
             //On met en BD !!
             $gestionnaireEntite = $this->getDoctrine()->getManager();
             $gestionnaireEntite->persist($Auteur);
             $gestionnaireEntite->flush();
             $livre->addAuteur($Auteur);
         }
         $Editeur = new Editeur();
         $Editeur = $editeur;
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($Editeur);
         $gestionnaireEntite->flush();
         //var_dump($Editeur);
         $livre->setTitre($Titre);
         $livre->setAnnee($Annee);
         $livre->setResume($Resume);
         $livre->setEditeur($Editeur);
         $livre->setImageLivre($Image);
         $livre->setOeuvre($oeuvre[0]);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($livre);
         $gestionnaireEntite->flush();
         return $this->voirOeuvreAction($id);
     }
     if ($this->getRequest()->get('action-type-film') == 'Valider') {
         $formFilm->handleRequest($requeteUtilisateurF);
         $tabFilm = $formFilm->getData();
         // je recup mes variables
         $Titre = $tabFilm['Titre'];
         $image = $tabFilm['Image'];
         $Duree = $tabFilm['Duree'];
         $Annee = $tabFilm['Annee'];
         $Synopsis = $tabFilm['Synopsis'];
         $Type = $tabFilm['Type'];
         $realisateur = $tabFilm['Realisateur'];
         $acteurs = $tabFilm['Acteur'];
         $film = new Film();
         $Image = new Image();
         $Image->setUrl($image);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($Image);
         $gestionnaireEntite->flush();
         $p = 0;
         for ($p = 0; $p < count($acteurs); $p++) {
             $Acteur = new Acteur();
             $Acteur = $acteurs[$p];
             //On met en BD !!
             $gestionnaireEntite = $this->getDoctrine()->getManager();
             $gestionnaireEntite->persist($Acteur);
             $gestionnaireEntite->flush();
             $film->addActeur($Acteur);
         }
         $Realisateur = new Realisateur();
         $Realisateur = $realisateur;
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($Realisateur);
         $gestionnaireEntite->flush();
         //var_dump($acteurs);
         $film->setTitre($Titre);
         $film->setAnnee($Annee);
         $film->setDuree($Duree);
         $film->setRealisateur($Realisateur);
         $film->setSynopsis($Synopsis);
         $film->setImageFilm($Image);
         $film->setType($Type);
         $film->setOeuvre($oeuvre[0]);
         //On met en BD !!
         $gestionnaireEntite = $this->getDoctrine()->getManager();
         $gestionnaireEntite->persist($film);
         $gestionnaireEntite->flush();
         return $this->voirOeuvreAction($id);
     }
     // Envoi du formulaire à la vue chargée de l'afficher
     return $this->render('NarratioWebOeuvresBundle:Default:ajouterFilmLivre.html.twig', array('type' => $type, 'id' => $id, 'monForm' => $monForm->createView(), 'obj' => $obj));
 }