src/Controller/CartController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Pneu;
  4. use App\Repository\PneuRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. /**
  9.  * @Route("/panier")
  10.  */
  11. class CartController extends AbstractController
  12. {
  13.     /**
  14.      * @Route("/", name="cart_index")
  15.      */
  16.     public function index(SessionInterface $sessionPneuRepository $pneuRepository)
  17.     {
  18.         $panier $session->get('panier', []);
  19.         // On initialise des variables
  20.         $data = [];
  21.         $total 0;
  22.         foreach($panier as $id => $quantity){
  23.             $pneu $pneuRepository->find($id);
  24.             $data[] = [
  25.                 'pneu' => $pneu,
  26.                 'quantity' => $quantity
  27.             ];
  28.             $total += $pneu->getPrix() * $quantity;
  29.         }
  30.         
  31.         return $this->render('cart/index.html.twig'compact('data''total'));
  32.     }
  33.     /**
  34.      * @Route("/add/{id}", name="cart_add")
  35.      */
  36.     public function add(Pneu $pneuSessionInterface $session)
  37.     {
  38.         //On récupère l'id du pneu
  39.         $id $pneu->getId();
  40.         // On récupère le panier existant
  41.         $panier $session->get('panier', []);
  42.         // On ajoute le pneu dans le panier s'il n'y est pas encore
  43.         // Sinon on incrémente sa quantité
  44.         if(empty($panier[$id])){
  45.             $panier[$id] = 1;
  46.         }else{
  47.             $panier[$id]++;
  48.         }
  49.         $session->set('panier'$panier);
  50.         
  51.         //On redirige vers la page du panier
  52.         return $this->redirectToRoute('cart_index');
  53.     }
  54.     /**
  55.      * @Route("/remove/{id}", name="cart_remove")
  56.      */
  57.     public function remove(Pneu $pneuSessionInterface $session)
  58.     {
  59.         //On récupère l'id du pneu
  60.         $id $pneu->getId();
  61.         // On récupère le panier existant
  62.         $panier $session->get('panier', []);
  63.         // On retire le pneu du panier s'il n'y a qu'1 exemplaire
  64.         // Sinon on décrémente sa quantité
  65.         if(!empty($panier[$id])){
  66.             if($panier[$id] > 1){
  67.                 $panier[$id]--;
  68.             }else{
  69.                 unset($panier[$id]);
  70.             }
  71.         }
  72.         $session->set('panier'$panier);
  73.         
  74.         //On redirige vers la page du panier
  75.         return $this->redirectToRoute('cart_index');
  76.     }
  77.     
  78.     /**
  79.      * @Route("/delete/{id}", name="cart_delete")
  80.      */
  81.     public function delete(Pneu $pneuSessionInterface $session)
  82.     {
  83.         //On récupère l'id du pneu
  84.         $id $pneu->getId();
  85.         // On récupère le panier existant
  86.         $panier $session->get('panier', []);
  87.         if(!empty($panier[$id])){
  88.             unset($panier[$id]);
  89.         }
  90.         $session->set('panier'$panier);
  91.         
  92.         //On redirige vers la page du panier
  93.         return $this->redirectToRoute('cart_index');
  94.     }
  95.     /**
  96.      * @Route("/empty", name="cart_empty")
  97.      */
  98.     public function empty(SessionInterface $session)
  99.     {
  100.         $session->remove('panier');
  101.         return $this->redirectToRoute('cart_index');
  102.     }
  103. }