Moin Zusammen,
so sieht mein Subscriber jetzt aus:
<?php
namespace TestCartCheck\Subscriber;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Checkout\Cart\SalesChannel\CartService;
use Shopware\Core\Framework\Struct\ArrayEntity;
class ProductPageSubscriber implements EventSubscriberInterface
{
private CartService $cartService;
public function __construct(CartService $cartService)
{
$this->cartService = $cartService;
}
public static function getSubscribedEvents(): array
{
return [
ProductPageLoadedEvent::class => 'onProductPageLoaded',
];
}
public function onProductPageLoaded(ProductPageLoadedEvent $event): void
{
$page = $event->getPage();
$product = $page->getProduct();
$context = $event->getSalesChannelContext();
// Warenkorb abrufen
$cart = $this->cartService->getCart($context->getToken(), $context);
// Prüfen, ob das Produkt im Warenkorb ist
$isInCart = 0;
foreach ($cart->getLineItems() as $item) {
if ($item->getReferencedId() === $product->getId()) {
$isInCart = 1;
break;
}
}
// Erweiterung zum Produkt hinzufügen
$product->addExtension('isInCart', new ArrayEntity(['value' => $isInCart]));
}
}
Das funktioniert auch soweit und mehr wollte ich auch nicht. Verbesserungsvorschläge sind natürlich immer willkommen.
Beste Grüße und vielen Dank für eure Beteiligung. Das hat mich angespornt dran zu bleiben.
Capt. Picard