public function modifierOeuvreAction($type, $id, Request $requeteUtilisateurL, Request $requeteUtilisateurF, Request $requeteUtilisateurO) { // Contrôle d'accès sur cette action métier if (false === $this->get('security.context')->isGranted('ROLE_USER')) { throw new AccessDeniedException(); } // je prepare mes formulaires !!! // Tableau dans lequel les données du formulaire seront recueillies $tabFilm = array(); $tabLivre = array(); $tabOeuvre = array(); switch ($type) { case 'monOeuvre': // code... // 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; $ImageOeuvre = $oeuvre[0]->getImage(); $image = $ImageOeuvre->getUrl(); //var_dump($idImage); // Créateur formulaire OEUVRE $formOeuvre = $this->createFormBuilder($tabOeuvre)->add('TrancheAge', 'entity', array('label' => 'Tranche d Age', 'class' => 'NarratioWebOeuvresBundle:TrancheAge', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getTrancheAge()))->add('Genre', 'entity', array('label' => 'Genre', 'class' => 'NarratioWebOeuvresBundle:Genre', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getGenre()))->add('Epoque', 'entity', array('label' => 'Epoque', 'class' => 'NarratioWebOeuvresBundle:Epoque', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getEpoque()))->add('Thematique', 'entity', array('label' => 'Thematique', 'class' => 'NarratioWebOeuvresBundle:Thematique', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getThematique()))->add('ProduitDerive', 'textarea', array('label' => 'Produits dérivés', 'required' => false, 'data' => $obj[0]->getProdDer()))->add('Concept', 'textarea', array('label' => 'Concept de l oeuvre', 'required' => false, 'data' => $obj[0]->getConcept()))->add('Image', 'url', array('label' => 'Image de l oeuvre', 'required' => false, 'data' => $image))->getForm(); $monForm = $formOeuvre; break; case 'monFilm': // code... // je charge mon repository de Film pour executer une requete sur la BD $repositoryFilms = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Film'); // j'execute la requete perso pour remplir un tableau de film en accord avec le formulaire de page d'acceuil $film = $repositoryFilms->findById($id); $obj = $film; //var_dump($film); $image = $film[0]->getImageFilm()->getUrl(); $ImageFilm = $film[0]->getImageFilm(); //var_dump($ImageFilm); // Créateur formulaire FILM $formFilm = $this->createFormBuilder($tabFilm)->add('Acteur', 'collection', array('label' => null, 'type' => new ActeurType(), 'required' => false, 'data' => $obj[0]->getActeurs(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))->add('Realisateur', new RealisateurType(), array('label' => 'Realisateur', 'required' => false, 'data' => $obj[0]->getRealisateur()))->add('Type', 'entity', array('label' => 'Type', 'class' => 'NarratioWebOeuvresBundle:Type', 'property' => 'intitule', 'multiple' => false, 'expanded' => false, 'required' => false, 'data' => $obj[0]->getType()))->add('Synopsis', 'textarea', array('label' => 'Synopsis', 'required' => false, 'data' => $obj[0]->getSynopsis()))->add('Annee', 'text', array('label' => 'Annee de parution', 'required' => false, 'data' => $obj[0]->getAnnee()))->add('Duree', 'integer', array('label' => 'Duree du film', 'required' => false, 'data' => $obj[0]->getDuree()))->add('Image', 'url', array('label' => 'Image du film', 'required' => false, 'data' => $image))->getForm(); $monForm = $formFilm; break; case 'monLivre': // code... // je charge mon repository de Livre pour executer une requete sur la BD $repositoryLivres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Livre'); // j'execute la requete perso pour remplir un tableau de Livre en accord avec le formulaire de page d'acceuil $livre = $repositoryLivres->findById($id); $obj = $livre; //var_dump($livre); $image = $livre[0]->getImageLivre()->getUrl(); $ImageLivre = $livre[0]->getImageLivre(); //var_dump($ImageLivre); // Créateur formulaire LIVRE $formLivre = $this->createFormBuilder($tabLivre)->add('Resume', 'textarea', array('label' => 'Resume', 'required' => false, 'data' => $obj[0]->getResume()))->add('Annee', 'text', array('label' => 'Annee de parution', 'required' => false, 'data' => $obj[0]->getAnnee()))->add('Auteur', 'collection', array('label' => null, 'type' => new AuteurType(), 'required' => false, 'data' => $obj[0]->getAuteur(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))->add('Editeur', new EditeurType(), array('label' => 'Editeur', 'required' => false, 'data' => $obj[0]->getEditeur()))->add('Image', 'url', array('label' => 'Image du livre', 'required' => false, 'data' => $image))->getForm(); $monForm = $formLivre; break; } //var_dump($formLivre); if ($this->getRequest()->get('action-type-oeuvre') == 'Valider') { $formOeuvre->handleRequest($requeteUtilisateurO); $tabOeuvre = $formOeuvre->getData(); // je recup mes variables $Epoque = $tabOeuvre['Epoque']; $Genre = $tabOeuvre['Genre']; $TrancheAge = $tabOeuvre['TrancheAge']; $Thematique = $tabOeuvre['Thematique']; $ProduitDerive = $tabOeuvre['ProduitDerive']; $Concept = $tabOeuvre['Concept']; $Image = $tabOeuvre['Image']; // je remet l'url a l'image $ImageOeuvre->setUrl($Image); //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($ImageOeuvre); $gestionnaireEntite->flush(); // 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); $oeuvre = $oeuvre[0]; $oeuvre->setEpoque($Epoque); $oeuvre->setGenre($Genre); $oeuvre->setTrancheAge($TrancheAge); $oeuvre->setThematique($Thematique); $oeuvre->setConcept($Concept); $oeuvre->setProdDer($ProduitDerive); $oeuvre->setImage($ImageOeuvre); //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($oeuvre); $gestionnaireEntite->flush(); return $this->voirOeuvreAction($oeuvre->getId()); } if ($this->getRequest()->get('action-type-film') == 'Valider') { $formFilm->handleRequest($requeteUtilisateurF); $tabFilm = $formFilm->getData(); // je recup mes variables $Type = $tabFilm['Type']; $Synopsis = $tabFilm['Synopsis']; $Annee = $tabFilm['Annee']; $Realisateur = $tabFilm['Realisateur']; $Duree = $tabFilm['Duree']; $Acteur = $tabFilm['Acteur']; $Image = $tabFilm['Image']; // je remet l'url a l'image $ImageFilm->setUrl($Image); //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($ImageFilm); $gestionnaireEntite->flush(); // je charge mon repository de Film pour executer une requete sur la BD $repositoryFilms = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Film'); // j'execute la requete perso pour remplir un tableau de film en accord avec le formulaire de page d'acceuil $film = $repositoryFilms->findById($id); $film = $film[0]; $film->setType($Type); $film->setSynopsis($Synopsis); $film->setAnnee($Annee); $film->setRealisateur($Realisateur); $film->setDuree($Duree); $film->setImageFilm($ImageFilm); $tabActeur = $Acteur->toArray(); //var_dump($tabActeur); $acteurDuFilm = $film->getActeurs()->toArray(); $w = 0; for ($w = 0; $w < count($acteurDuFilm); $w++) { if (in_array($acteurDuFilm[$w], $tabActeur) == false) { //var_dump($auteurDuLivre[$w]); $monActeur = $acteurDuFilm[$w]; $film->removeActeur($monActeur); } else { } } // je calcule mon indice d'arret pour trier et enlever les cases vide d'un tableau $indicesTab = array_keys($tabActeur); $lastIndice = $indicesTab[count($indicesTab) - 1]; //var_dump($lastIndice); $tabTri = array(); $v = 0; $b = 0; for ($v = 0; $v <= $lastIndice; $v++) { if (!empty($tabActeur[$v])) { $tabTri[$b] = $tabActeur[$v]; $b++; } } $tabActeur = $tabTri; //var_dump($tabActeur); $repositoryActeur = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Acteur'); $t = 0; for ($t = 0; $t < count($tabActeur); $t++) { if ($repositoryActeur->findById($tabActeur[$t]->getId()) != null) { $leActeur = $repositoryActeur->findById($tabActeur[$t]->getId()); $leActeur = $leActeur[0]; $leActeur->setNom($tabActeur[$t]->getNom()); $leActeur->setPrenom($tabActeur[$t]->getPrenom()); $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($leActeur); $gestionnaireEntite->flush(); } else { $monActeur = new Acteur(); $monActeur->setNom($tabActeur[$t]->getNom()); $monActeur->setPrenom($tabActeur[$t]->getPrenom()); $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($monActeur); $gestionnaireEntite->flush(); $film->addActeur($monActeur); } } //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($film); $gestionnaireEntite->flush(); return $this->voirOeuvreAction($film->getOeuvre()->getId()); } if ($this->getRequest()->get('action-type-livre') == 'Valider') { $formLivre->handleRequest($requeteUtilisateurL); $tabLivre = $formLivre->getData(); // je recup mes variables $Editeur = $tabLivre['Editeur']; $Resume = $tabLivre['Resume']; $Annee = $tabLivre['Annee']; $Auteur = $tabLivre['Auteur']; $Image = $tabLivre['Image']; // je remet l'url a l'image $ImageLivre->setUrl($Image); //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($ImageLivre); $gestionnaireEntite->flush(); // je charge mon repository de Film pour executer une requete sur la BD $repositoryLivres = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Livre'); // j'execute la requete perso $livre = $repositoryLivres->findById($id); $livre = $livre[0]; $livre->setEditeur($Editeur); $livre->setResume($Resume); $livre->setAnnee($Annee); $livre->setImageLivre($ImageLivre); $tabAuteur = $Auteur->toArray(); //var_dump($tabAuteur); $auteurDuLivre = $livre->getAuteur()->toArray(); $w = 0; for ($w = 0; $w < count($auteurDuLivre); $w++) { if (in_array($auteurDuLivre[$w], $tabAuteur) == false) { //var_dump($auteurDuLivre[$w]); $monAuteur = $auteurDuLivre[$w]; $livre->removeAuteur($monAuteur); } else { } } //var_dump($auteurDuLivre); $repositoryAuteur = $this->getDoctrine()->getEntityManager()->getRepository('NarratioWebOeuvresBundle:Auteur'); $t = 0; for ($t = 0; $t < count($tabAuteur) + 1; $t++) { if ($t == 1) { } else { if ($repositoryAuteur->findById($tabAuteur[$t]->getId()) != null) { $leAuteur = $repositoryAuteur->findById($tabAuteur[$t]->getId()); $leAuteur = $leAuteur[0]; $leAuteur->setNom($tabAuteur[$t]->getNom()); $leAuteur->setPrenom($tabAuteur[$t]->getPrenom()); $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($leAuteur); $gestionnaireEntite->flush(); } else { $monAuteur = new Auteur(); $monAuteur->setNom($tabAuteur[$t]->getNom()); $monAuteur->setPrenom($tabAuteur[$t]->getPrenom()); $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($monAuteur); $gestionnaireEntite->flush(); $livre->addAuteur($monAuteur); } } } //On met en BD !! $gestionnaireEntite = $this->getDoctrine()->getManager(); $gestionnaireEntite->persist($livre); $gestionnaireEntite->flush(); return $this->voirOeuvreAction($livre->getOeuvre()->getId()); } // Envoi du formulaire à la vue chargée de l'afficher return $this->render('NarratioWebOeuvresBundle:Default:modifierOeuvre.html.twig', array('type' => $type, 'id' => $id, 'monForm' => $monForm->createView(), 'obj' => $obj, 'image' => $image)); }