src/Controller/CartController.php line 16

  1. <?php
  2. namespace App\Controller;
  3. use App\Classe\Cart;
  4. use App\Repository\ProductRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class CartController extends AbstractController
  10. {
  11.     // Route pour afficher le panier
  12.     #[Route('/mon-panier/{motif}'name'app_cart',defaults: [ 'motif' => null ])]
  13.     public function index(Cart $cart$motif): Response
  14.     {
  15.         if ($motif == "annulation") {
  16.            $this->addFlash(
  17.                'info',
  18.                'Paiement annulé: Vous pouvez mettre à jour votre panier et votre commande '
  19.            );
  20.         }
  21.         // Rendu de la vue du panier avec le contenu du panier
  22.         return $this->render('cart/index.html.twig', [
  23.             'cart' => $cart->getCart(),
  24.             'totalWt' => $cart->getTotalWt()
  25.         ]);
  26.     }
  27.     // Route pour ajouter un produit au panier
  28.     #[Route('/cart/add/{id}'name'app_cart_add')]
  29.     public function add($idCart $cartProductRepository $productRepository,Request $request): Response
  30.     {
  31.         // Récupération du produit par son ID
  32.         $product $productRepository->findOneById($id);
  33.         // Ajout du produit au panier
  34.         $cart->add($product);
  35.         // Ajout d'un message flash pour informer l'utilisateur
  36.         $this->addFlash(
  37.             'primary',
  38.             "Vous venez d'ajouter un nouvel article dans votre panier"
  39.         );
  40.         // Redirection vers la page du produit
  41.         return $this->redirect($request->headers->get('referer'));
  42.     }
  43.     // Route pour ajouter un produit au panier
  44.     #[Route('/cart/decrease/{id}'name'app_cart_decrease')]
  45.     public function decrease($idCart $cart): Response
  46.     {
  47.         $cart->decrease($id);
  48.         // Ajout d'un message flash pour informer l'utilisateur
  49.         $this->addFlash(
  50.             'danger',
  51.             "Produit correctement supprimé de votre panier"
  52.         );
  53.         // Redirection vers la page du produit
  54.         return $this->redirectToRoute('app_cart');
  55.     }
  56.     // Route pour supprimer un produit au panier
  57.     #[Route('/cart/remove'name'app_cart_remove')]
  58.     public function removeCart $cart): Response
  59.     {
  60.         $cart->remove();
  61.         // Redirection vers la page du produit
  62.         return $this->redirectToRoute('app_home');
  63.     }
  64. }