Shopware 6 - 如何保存购物车中的商品?

Leo*_*itz 1 cart shopware shopware6

我希望我能帮助您解决在 Shopware 6 中遇到的有关将已删除的商品保存到购物车中的问题。

在我当前的实现中,我使用 CartProcessorInterface 并在收集函数中添加行项目。但是,我遇到了一个问题,如果用户从购物车中删除这些商品,它们会在页面重新加载或购物车重新加载时重新添加。

我渴望找到一种解决方案来防止用户删除这些项目后再次添加它们。是否有一种方法或途径来存储商品已从购物车中删除且不应再次添加的信息?

预先感谢您的帮助!

Ezy*_*cod 6

您不应该在处理器中添加行项目,例如这样做。在事件订阅者中并通过购物车服务添加它们。

看一下官方文档: https://developer.shopware.com/docs/guides/plugins/plugins/checkout/cart/add-cart-items

// Shopware\Core\Checkout\Cart\LineItemFactoryRegistry
$lineItem = $this->factory->create([
    'type' => LineItem::PRODUCT_LINE_ITEM_TYPE, // Results in 'product'
    'referencedId' => 'myExampleId', // this is not a valid UUID, change this to your actual ID!
    'quantity' => 5,
    'payload' => ['key' => 'value']
], $context);

// Shopware\Core\Checkout\Cart\SalesChannel\CartService
$this->cartService->add($cart, $lineItem, $context);
Run Code Online (Sandbox Code Playgroud)

如果您需要在删除另一个订单项时对订单项执行某些操作,则可以使用 BeforeLineItemRemovedEvent 或 AfterLineItemRemovedEvent