Hallo,
wenn ich mich an das Event LineItemAddedEvent::class => ‚onLineItemAdded‘ einhänge, möchte ich ein custom field im Warenkorb ausgeben.
Dies habe ich bis jetzt so gelöst:
public function onLineItemAdded(LineItemAddedEvent $event)
{
$myCart = $event->getCart();
$myLineItems = $myCart->getLineItems();
foreach ($myLineItems as $key => $item) {
if ($product_id == $key && $item->hasPayloadValue('test1') == false) {
$lineItem->setPayloadValue('test1', 'test1');
}
}
}
Leider wird die Variable „test1“ aber nicht in der offcanvas-cart.html.twig ausgegeben.
Weiß jemand Rat?
Hi,
ich habe selbiges Unterfangen wie folgt gelöst
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return[
LineItemAddedEvent::class => 'onLineItemAdded',
];
}
/**
* @param LineItemAddedEvent $event
* @throws \Shopware\Core\Checkout\Cart\Exception\InvalidPayloadException
*/
public function onLineItemAdded(LineItemAddedEvent $event): void
{
$lineItem = $event->getLineItem();
/** @var ProductEntity $product */
foreach ($this->requestStack->getCurrentRequest()->get('lineItems') as $key => $item) {
if ($lineItem->getId() == $key) {
$lineItem->setPayloadValue('test', 'test1');
}
}
}
}
Ich schätze mal durch $myLineItems = $myCart->getLineItems(); arbeitest Du nur noch auf einer Kopie und veränderst nicht die tatsächliche LineItemCollection in der Cart. Sprich Dir fehlt der Setter um Deine bearbeitete Collection der Cart wieder zuzuweisen.
1 „Gefällt mir“