src/Form/EventListener/RemoveCartItemListener.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Form\EventListener;
  3. use App\Entity\OrderItem;
  4. use App\Entity\Orders;
  5. use App\Factory\OrderFactory;
  6. use App\Manager\CartManager;
  7. use App\Storage\CartSessionStorage;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Form\FormEvent;
  11. use Symfony\Component\Form\FormEvents;
  12. class RemoveCartItemListener implements EventSubscriberInterface
  13. {
  14.     public EntityManagerInterface $em;
  15.     private CartManager $cartManager;
  16.     private CartSessionStorage $cartStorage;
  17.     public function __construct(EntityManagerInterface $emCartManager $cartManagerCartSessionStorage $cartStorage)
  18.     {
  19.         $this->em $em;
  20.         $this->cartManager $cartManager;
  21.         $this->cartStorage $cartStorage;
  22.     }
  23.     /**
  24.      * {@inheritDoc}
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [FormEvents::POST_SUBMIT => 'postSubmit'];
  29.     }
  30.     /**
  31.      * Removes items from the cart based on the data sent from the user.
  32.      * @param FormEvent $event
  33.      */
  34.     public function postSubmit(FormEvent $event): void
  35.     {
  36.         $form $event->getForm();
  37.         $cart $form->getData();
  38.         if (!$cart instanceof Orders) {
  39.             return;
  40.         }
  41.         // Removes items from the cart
  42.         foreach ($form->get('items')->all() as $child) {
  43.             if ($child->get('remove')->isClicked()) {
  44.                 $id $child->getNormData()->getId();
  45.                 $c3 $this->em->getRepository(OrderItem::class)->findOneBy(['id'=>$id]);
  46.                 $cart->removeItem($child->getData());
  47.                 $this->em->remove($c3);
  48.  /*               $this->em->persist($cart);
  49.                 $this->em->flush();
  50.                 $this->em->clear();*/
  51.                 $this->em->flush();
  52.                 break;
  53.             }
  54.         }
  55.     }
  56. }