Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller;
- use App\Entity\Livre;
- use App\Entity\Exemplaire;
- use App\Form\LivreType;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Doctrine\ORM\Query\ResultSetMapping;
- class LivreController extends AbstractController
- {
- public function livres()
- {
- // Creation du tableau
- $livres = $this->getDoctrine()->getRepository(Livre::class)->findAll();
- //Passage du tableau au template
- return $this->render('livre/livres.html.twig',['titre'=>"Liste des livres",'livres'=>$livres]);
- }
- public function detailLivre($id)
- {
- $livre = $this->getDoctrine()->getRepository(Livre::class)->find($id);
- $exemplaires = $this->getDoctrine()->getRepository(Exemplaire::class)->getByLivre($livre);
- ////////////////////
- // préparation du mapping champ calculé - objet Doctrine
- $rsm = new ResultSetMapping();
- $rsm->addScalarResult('nbexemplairesdispodelivre','nbexemplairesdispodelivre');
- // préparation de la requête permettant l'appel de la procédure stockée qui attend un paramètre, l'id du livre.
- $query = $this->getDoctrine()->getManager()->createNativeQuery('select nbexemplairesdispodelivre (:idl)', $rsm);
- $query->setParameter(':idl', $livre->getId());
- // exécution de la requête et récupération du résultat
- $res = $query->getScalarResult();
- $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)
- ////////////////////
- return $this->render('livre/detailLivres.html.twig',['titre'=>"Detail du livre",'livre'=>$livre,'exemplaires'=>$exemplaires,'nbEx' => $nb]);
- }
- public function genreLivre($id)
- {
- $livre = $this->getDoctrine()->getRepository(Livre::class)->find($id);
- return $this->render('livre/genreLivre.html.twig',['titre'=>"Genres du livre",'livre'=>$livre]);
- }
- public function creerLivre(Request $request)
- {
- $livre = new Livre();
- $formLivre = $this->createForm(LivreType::class,$livre);
- $formLivre->handleRequest($request); // $request est un objet transmis en paramètre de la fonction
- if ($formLivre->isSubmitted()) {
- // [code de traitement du formulaire une fois soumis : récupération des données] //A compléter
- $entityManager = $this->getDoctrine()->getManager();
- $entityManager->persist($livre); //stocké en mémoire dans la collection de livres
- $entityManager->flush(); // synchronisation avec la BDD -> production d'un ordre SQL de type INSERT
- return $this->redirect("/livre/".$livre->getId()); //A compléter
- }
- // Construction de la réponse du formulaire non soumis -- affichage du formulaire
- return $this->render('livre/creerLivres.html.twig', ['titre' => "creation de livre", 'formCreationLivre' => $formLivre->createView()]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement