shopware 6 购物车行项目重复结果

分享于2022年07月17日 php shopware shopware6 问答
【问题标题】:shopware 6 cart line items duplicate resultsshopware 6 购物车行项目重复结果
【发布时间】:2022-07-05 19:03:23
【问题描述】:

给出下面的代码示例

private function test(Cart $cart): LineItemCollection
{
    return $cart->getLineItems()->filter(function (LineItem $item) {
        // Only consider products, not custom line items or promotional line items
        if ($item->getType() !== LineItem::PRODUCT_LINE_ITEM_TYPE) {
            return false;
        }
        $exampleInLabel = $item->getLabel();

并且一件商品在购物车中,exampleInLabel 是标签的两倍。

这与任何其他功能相同,例如 getPayloadValue() getQuantity() 等。

如何克服?

  • 这个方法是在 CartProcessor 中调用的吗?或者它叫什么名字?请记住,处理器在计算过程中可能会运行多次,因此有问题的代码可能会被简单地执行两次,因为商店软件会重新运行购物车计算。
  • @j_elfering 是的,它在 CartProcessor 中,我知道商店软件会多次遍历购物车以根据规则“丰富”数据。但是,我的问题仍然存在...如果我需要获取项目的数量以创建更多规则,例如我会得到 33 而不是 3...等等...任何解决方案?

【解决方案1】:

尝试在订阅者中执行此操作,可能在 beforeLineItemAddedEvent 中

【讨论】: