src/Controller/CartController.php line 29
<?phpnamespace App\Controller;use App\Entity\Service;use App\Repository\ServiceRepository;use App\Twig\Extension\AppExtension;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\Session\SessionInterface;use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;use Symfony\Component\Routing\Annotation\Route;use Twig\Environment;class CartController extends AbstractController{private $em;private $twig;public function __construct(EntityManagerInterface $em,Environment $twig ){$this->em=$em;$this->twig=$twig;}#[Route('/cart', name: 'app_cart_index')]public function index(SessionInterface $session, ServiceRepository $serviceRepository): Response{$response = new Response(); // A supprimer apres fin dev$services=$this->em->getRepository(Service::class)->findBy([],['id'=>"ASC"]);$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true'); // A supprimer apres fin dev$cartProduct = $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twigreturn $this->render('cart/index.html.twig', ['services' => $services,'cartProduct' => $cartProduct,]);}/*** @Route("/add/{id}", name="cart_add")*/public function add(Service $service, SessionInterface $session,Request $request){$product_cart = $this->em->getRepository(Service::class)->find($service->getId());if (!$service) {throw $this->createNotFoundException('Le produit n\'existe pas.');}// Récupérer le tableau existant dans la session ou créer un nouveau tableau s'il n'existe pas$products = $session->get('products', array());// Incrémenter le nombre de produits à chaque ajout$productCount = count($products) + 1;// Vérifier si un nouveau produit a été ajouté via la méthode POSTif ($request->isMethod('POST')) {$_shop_src = $request->request->get('_shop_src');$shop_qnty = $request->request->get('_shop_qnty');$product= $product_cart;// Ajouter un nouveau produit au tableau$newProduct = array('product_id'=>uniqid(),'_shop_src' => $_shop_src,'_shop_qnty' => $shop_qnty,'product' => $product,);$products[] = $newProduct;// Mettre à jour le tableau dans la session$session->set('products', $products);// Rediriger l'utilisateur vers la même page pour éviter les re-submissions du formulaire$referer = $request->headers->get('referer');$this->addFlash('success', "Panier mise à jour ");//Redirect to success pagereturn $this->redirect($referer);}return $this->redirectToRoute("app_cart_index");}/*** @Route("/cart/remove/{productId}", name="remove_from_cart")*/public function removeFromCartAction(Request $request, $productId,SessionInterface $session){// Récupérer le panier de la session$products = $session->get('products');$cart = array_filter($products, function($item) use ($productId) {return $item['product_id'] !== $productId;});//Enregistrer le panier modifié dans la session$session->set('products', $cart);return $this->redirectToRoute("app_cart_index");}}