src/Controller/BasketController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\BookAd;
  4. use App\Repository\BasketRepository;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. #[IsGranted('ROLE_USER')]
  10. class BasketController extends AbstractController
  11. {
  12.     // 05-04
  13.     // affichage du panier de l'utilisateur
  14.     #[Route('/mon-panier'name'app_basket_show')]
  15.     public function show(): Response
  16.     {
  17.         return $this->render('basket/show.html.twig', [
  18.             // j'aurais aussi bien pu metre ads que books ou basketBooks
  19.             // 'ads' => $this->getUser()->getBasket()->getBooks()
  20.             // not even needed anyway
  21.         ]);
  22.         // on peut aussi l'écrire directement comme ça en fait :
  23.         // return $this->render('basket/show.html.twig');
  24.     }
  25.     // 05-04
  26.     // ajouter un livre au panier de l'utilisateur
  27.     #[Route('/mon-panier/ajouter/{id}'name'app_basket_add')]
  28.     public function add(BookAd $bookBasketRepository $repository): Response
  29.     {
  30.         // full yolo - it works lmao :
  31.         // c'est vraiment la bonne méthode en fait
  32.         /*
  33.         $basket = $this->getUser()->getBasket();
  34.         $basket->addBook($book);
  35.         $repository->save($basket, true);
  36.         */
  37.         // je c/c la correction complète parce qu'il faut détacher getUser()
  38.         // pour le problème de soulignage / erreur vsc/intelephense sur getBasket()
  39.         // même problème comme ça btw :
  40.         // $repository->save($this->GetUser()->getBasket()->addBook($book, true));
  41.         // Je récupère l'utilisateur connécté
  42.         /**
  43.          * Ceci est un commentaire de documentation. Ici, ce commentaire
  44.          * permet à vscode de forcer le type d'une variable. Ici : User
  45.          * 
  46.          * @var User
  47.          */
  48.         $user $this->getUser();
  49.         // Je récupère son panier
  50.         $basket $user->getBasket();
  51.         // J'ajoute le livre dans le panier
  52.         $basket->addBook($book);
  53.         // J'enregistre le panier
  54.         $repository->save($baskettrue);
  55.         return $this->redirectToRoute('app_basket_show');
  56.     }
  57.     // 05-04
  58.     // supprimer un livre du panier de l'utilisateur
  59.     // (Correction du 06-04 parce que j'avais déjà fait le truc une fois)
  60.     #[Route('/mon-panier/supprimer/{id}'name'app_basket_remove')]
  61.     public function remove(BookAd $bookBasketRepository $repository): Response
  62.     {
  63.         // Je récupère l'utilisateur connécté       
  64.         /** 
  65.          * @var User
  66.          */
  67.         $user $this->getUser();
  68.         // Je récupère son panier
  69.         $basket $user->getBasket();
  70.         // Je supprime le livre du panier
  71.         $basket->removeBook($book);
  72.         // J'enregistre le panier
  73.         $repository->save($baskettrue);
  74.         // Je redirige vers la page du panier
  75.         return $this->redirectToRoute('app_basket_show');
  76.     }
  77. }