src/Form/EventListener/RemoveCartItemListener.php line 25
<?php
namespace App\Form\EventListener;
use App\Entity\Order;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class RemoveCartItemListener implements EventSubscriberInterface
{
/**
* @inheritDoc
*/
public static function getSubscribedEvents(): array
{
return [FormEvents::POST_SUBMIT => 'postSubmit'];
}
/**
* Removes items from the cart based on the data sent from the user.
*
* @param FormEvent $event
*/
public function postSubmit(FormEvent $event): void
{
$form = $event->getForm();
$cart = $form->getData();
if (!$cart instanceof Order) {
return;
}
// Removes items from the cart
foreach ($form->get('orderitems')->all() as $child) {
if ($child->get('delete')->isClicked()) {
$cart->removeOrderItem($child->getData());
break;
}
}
}
}