Điểm:0

Cập nhật số lượng chi tiết đơn hàng khác khi chi tiết đơn hàng được cập nhật

lá cờ ke

Drupal 9, Thương mại Drupal 2.26 Tôi có một người đăng ký sự kiện, đang nghe CartEvents .. cụ thể là CartEvents::CART_ORDER_ITEM_UPDATE

Tôi có sản phẩm thuộc loại này tham khảo sản phẩm thuộc loại khác.

Mục tiêu là khi người dùng cập nhật mặt hàng đặt hàng cho sản phẩm thuộc loại 'loại' trong giỏ hàng, mặt hàng đặt hàng cho số lượng material_kit phù hợp sẽ được cập nhật để khớp.

Tôi có những người đăng ký sự kiện tương tự, cho phép tôi tạo một mục đặt hàng phù hợp khi một sản phẩm được thêm vào giỏ hàng hoặc khi một mục đặt hàng bị xóa, mục đặt hàng phù hợp cũng bị xóa. Chỉ cập nhật số lượng để khớp với các bản cập nhật khác không hoạt động.

Sự kiện cháy như mong đợi.Luồng thực thi đi qua các điều kiện, cập nhật số lượng của mục hàng thứ 2, nhưng số lượng đã cập nhật không bao giờ được phản ánh. Nó giống như nó không bao giờ xảy ra.

Tôi có thể xóa và tạo lại một mặt hàng đặt hàng mới cho sản phẩm, nhưng tôi không muốn làm như vậy và muốn hiểu điều gì đang xảy ra.

Vậy làm thế nào để cập nhật số lượng của một mặt hàng đặt hàng khác, khi số lượng mặt hàng đặt hàng được cập nhật trong giỏ hàng?

/**
   * Quản lý số lượng bộ tài liệu tham khảo khi thay đổi số lượng sản phẩm của lớp
   *
   * @param \Drupal\commerce_cart\Event\CartOrderItemUpdateEvent $event
   * Sự kiện giỏ hàng.
   */
  chức năng công khai onCartOrderItemUpdate(CartOrderItemUpdateEvent $event) {
    $order_item = $event->getOrderItem();
    $product_variation = $order_item->getPurchasedEntity();
    $productType = $product_variation->get('type')[0]->get('target_id')->getValue();
    nếu ($productType == 'class') {
      $class_quantity = $order_item->getQuantity();
      $cart = $event->getCart();
      $product = $product_variation->getProduct();
      $material_kit_field_value = $product->get('field_material_fees')->getValue();
      if (!empty($material_kit_field_value[0]['target_id']) && empty($payable_to_instructor[0]['value'])) {
        $material_kit_product = Sản phẩm::load($material_kit_field_value[0]['target_id']);
        if (!empty($material_kit_product)) {
          $material_kit_variations = $material_kit_product->getVariations();
          $material_kit_variation_id = $material_kit_variations[0]->id();
          foreach ($cart->getItems() as $key => $oi) {
            $pv = $oi->getPurchasedEntity();
            $pt = $pv->get('type')[0]->get('target_id')->getValue();
            if ($pt == 'material_kit') {
              if ($pv->id() == $material_kit_variation_id) {
                // luồng thực thi đến đây, nhưng số lượng cập nhật không "dính"
                $oi->setQuantity($class_quantity);
                $this->cartManager->updateOrderItem($cart, $oi);
                // tại sao cập nhật mục đơn hàng không hoạt động? ^^
              }
            }
          }
        }
      }
    }
  }

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.