<?php
declare(strict_types=1);
namespace Imnxx\Subscriber;
use Shopware\Core\Checkout\Cart\Event\BeforeLineItemAddedEvent;
use Shopware\Core\Framework\Struct\ArrayStruct;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LineItemSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
BeforeLineItemAddedEvent::class => 'onBeforeLineItemAdded',
];
}
public function onBeforeLineItemAdded(BeforeLineItemAddedEvent $event): void
{
$cart = $event->getCart();
$addedLineItem = $event->getLineItem();
$lineItems = $cart->getLineItems();
foreach ($lineItems as $lineItem) {
$payload = $lineItem->getPayload();
$lastAdded = $payload['lastAddedItem'] ?? null;
if (
$lineItem->getId() !== $addedLineItem->getId() && $lastAdded === true
) {
$lineItem->removePayloadValue('lastAddedItem');
}
}
$addedLineItem->setPayloadValue('lastAddedItem', true);
}
}