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)); }