Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.18 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Controller;
  4.  
  5. use App\Entity\Livre;
  6. use App\Entity\Exemplaire;
  7. use App\Form\LivreType;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11.  
  12. use Doctrine\ORM\Query\ResultSetMapping;
  13.  
  14. class LivreController extends AbstractController
  15. {
  16.  
  17.     public function livres()
  18.     {
  19.         // Creation du tableau
  20.         $livres = $this->getDoctrine()->getRepository(Livre::class)->findAll();
  21.         //Passage du tableau au template
  22.         return $this->render('livre/livres.html.twig',['titre'=>"Liste des livres",'livres'=>$livres]);
  23.     }
  24.  
  25.     public function detailLivre($id)
  26.     {
  27.  
  28.         $livre = $this->getDoctrine()->getRepository(Livre::class)->find($id);
  29.         $exemplaires = $this->getDoctrine()->getRepository(Exemplaire::class)->getByLivre($livre);
  30.  
  31.         ////////////////////
  32.         // préparation du mapping champ calculé - objet Doctrine
  33.         $rsm = new ResultSetMapping();
  34.         $rsm->addScalarResult('nbexemplairesdispodelivre','nbexemplairesdispodelivre');
  35.         // préparation de la requête permettant l'appel de la procédure stockée qui attend un paramètre, l'id du livre.
  36.         $query = $this->getDoctrine()->getManager()->createNativeQuery('select nbexemplairesdispodelivre (:idl)', $rsm);
  37.         $query->setParameter(':idl', $livre->getId());
  38.         // exécution de la requête et récupération du résultat
  39.         $res = $query->getScalarResult();
  40.         $nb = $res[0]['nbexemplairesdispodelivre']; // le résultat est un jeu d'enregistrement composé d'un seul tuple (0) offrant la colonne nbexemplairedispo comme valeur (cf. le SELECT construit dans la procédure)
  41.         ////////////////////
  42.  
  43.         return $this->render('livre/detailLivres.html.twig',['titre'=>"Detail du livre",'livre'=>$livre,'exemplaires'=>$exemplaires,'nbEx' => $nb]);
  44.     }
  45.  
  46.     public function genreLivre($id)
  47.     {
  48.         $livre = $this->getDoctrine()->getRepository(Livre::class)->find($id);
  49.         return $this->render('livre/genreLivre.html.twig',['titre'=>"Genres du livre",'livre'=>$livre]);
  50.     }
  51.  
  52.  
  53.     public function creerLivre(Request $request)
  54.     {
  55.         $livre = new Livre();
  56.  
  57.         $formLivre = $this->createForm(LivreType::class,$livre);
  58.  
  59.         $formLivre->handleRequest($request); // $request est un objet transmis en paramètre de la fonction
  60.  
  61.         if ($formLivre->isSubmitted()) {
  62.  
  63.             // [code de traitement du formulaire une fois soumis : récupération des données] //A compléter
  64.  
  65.             $entityManager = $this->getDoctrine()->getManager();
  66.             $entityManager->persist($livre); //stocké en mémoire dans la collection de livres
  67.             $entityManager->flush(); // synchronisation avec la BDD -> production d'un ordre SQL de type INSERT
  68.  
  69.             return $this->redirect("/livre/".$livre->getId()); //A compléter
  70.         }
  71.  
  72.         // Construction de la réponse du formulaire non soumis -- affichage du formulaire
  73.         return $this->render('livre/creerLivres.html.twig', ['titre' => "creation de livre", 'formCreationLivre' => $formLivre->createView()]);
  74.     }
  75.  
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement