Hey zusammen. Bin noch nicht all zu lange mit Shopware unterwegs. Kann sein, dass ich deswegen was völlig offensichtliches bei meinem Problem übersehe.
Mein Ziel ist es, wie beim .header-cart-total, dass sich der Preis automatisch anpasst.
Allerdings möchte ich den Wert bei diesem Event noch anpassen vor der Ausgabe.
Ich möchte nämlich einen Restbetrag bis zur kostenlosen Lieferung im buy-widget.html.twig anzeigen lassen, basierend auf dem Wert, der bereits im Warenkorb liegt.
Habe bereits gesehen, dass es in manchen Templates page.cart gibt, habe allerdings bisher nicht gefunden woher das kommt, bzw. wo das definiert wird.
Bisher habe ich es nur über das StorefrontRenderEvent geschafft, mir am Anfang die Daten überhaupt ausgeben zu lassen, um in twig darauf zuzugreifen.
#[Package('storefront')]
class StorefrontEventSubscriber implements EventSubscriberInterface {
private const FREE_SHIPPING_START = 50;
public function __construct(
private readonly CartService $cartService
)
{
}
public static function getSubscribedEvents(): array
{
return [
StorefrontRenderEvent::class => 'onStorefrontRender'
];
}
/**
* @param StorefrontRenderEvent $event
* @return void
*/
public function onStorefrontRender(StorefrontRenderEvent $event): void
{
$salesChannelContext = $event->getSalesChannelContext();
$cart = $this->cartService->getCart($salesChannelContext->getToken(), $salesChannelContext);
$price = $cart->getPrice()->getPositionPrice();
if ($event->getRequest()->isXmlHttpRequest()) return;
$event->setParameter(
'theme',
[
'remainderRaw' => max(0, self::FREE_SHIPPING_START - $price),
]
);
}
}
Ignoriert bitte den hardcoded Wert für das Free Shipping. Das wird später noch abgeändert
Meine Frage wäre dann, wie ich ‚remainderRaw‘ so umschreiben muss, dass sich der Wert im Storefront automatisch anpasst, beim ändern des Warenkorbwertes.
PS: kleine Nebenfrage. CartService wird mir als deprecated angezeigt. Gibt es bereits einen alternativen Weg, darauf zuzugreifen?
Ich bedanke mich schon einmal für jede Hilfe