Score:0

อัปเดตปริมาณรายการโฆษณาอื่นเมื่อมีการอัปเดตรายการโฆษณา

ธง ke

Drupal 9, การค้า Drupal 2.26 ฉันมีสมาชิกกิจกรรมกำลังฟัง CartEvents .. โดยเฉพาะ CartEvents::CART_ORDER_ITEM_UPDATE

ฉันมีผลิตภัณฑ์ประเภทหนึ่งที่อ้างอิงถึงผลิตภัณฑ์อีกประเภทหนึ่ง

เป้าหมายคือเมื่อผู้ใช้อัปเดตรายการสั่งซื้อสำหรับผลิตภัณฑ์ประเภท 'คลาส' ในรถเข็น รายการสั่งซื้อสำหรับปริมาณ material_kit ที่ตรงกันจะได้รับการอัปเดตให้ตรงกัน

ฉันมีผู้ติดตามกิจกรรมที่คล้ายกัน ซึ่งทำให้ฉันสามารถสร้างรายการสั่งซื้อที่ตรงกันได้เมื่อเพิ่มสินค้าลงในรถเข็น หรือเมื่อรายการสั่งซื้อถูกลบออก รายการสั่งซื้อที่ตรงกันก็จะถูกลบไปด้วย การอัปเดตปริมาณเพื่อให้ตรงกับการอัปเดตอื่นเท่านั้นไม่ทำงาน

เหตุการณ์เป็นไปตามคาดโฟลว์การดำเนินการผ่านเงื่อนไข อัปเดตปริมาณของรายการบรรทัดที่ 2 แต่ปริมาณที่อัปเดตจะไม่สะท้อนให้เห็น เหมือนมันไม่เคยเกิดขึ้น

ฉันอาจลบและสร้างรายการสั่งซื้อใหม่สำหรับผลิตภัณฑ์ได้ แต่ไม่ต้องการทำ และต้องการทำความเข้าใจกับสิ่งที่เกิดขึ้น

ดังนั้นจะอัปเดตปริมาณของรายการสั่งซื้ออื่นได้อย่างไร เมื่อมีการอัปเดตจำนวนรายการสั่งซื้อในรถเข็น

/**
   * จัดการปริมาณชุดวัสดุอ้างอิงในการเปลี่ยนแปลงปริมาณผลิตภัณฑ์ระดับ
   *
   * @param \Drupal\commerce_cart\Event\CartOrderItemUpdateEvent $event
   * เหตุการณ์รถเข็น
   */
  ฟังก์ชั่นสาธารณะ onCartOrderItemUpdate (CartOrderItemUpdateEvent เหตุการณ์ $) {
    $order_item = $event->getOrderItem();
    $product_variation = $order_item->getPurchasedEntity();
    $productType = $product_variation->get('type')[0]->get('target_id')->getValue();
    ถ้า ($ productType == 'คลาส') {
      $class_quantity = $order_item->getQuantity();
      $cart = $event->getCart();
      $product = $product_variation->getProduct();
      $material_kit_field_value = $product->get('field_material_fees')->getValue();
      ถ้า (!empty($material_kit_field_value[0]['target_id']) && blank($payable_to_instructor[0]['value'])) {
        $material_kit_product = สินค้า::load($material_kit_field_value[0]['target_id']);
        ถ้า (!empty($material_kit_product)) {
          $material_kit_variations = $material_kit_product->getVariations();
          $material_kit_variation_id = $material_kit_variations[0]->id();
          foreach ($cart->getItems() เป็น $key => $oi) {
            $pv = $oi->getPurchasedEntity();
            $pt = $pv->get('type')[0]->get('target_id')->getValue();
            ถ้า ($pt == 'material_kit') {
              ถ้า ($pv->id() == $material_kit_variation_id) {
                // ขั้นตอนการดำเนินการมาถึงที่นี่ แต่ปริมาณที่อัปเดตไม่ "ติด"
                $oi->setQuantity($class_quantity);
                $this->cartManager->updateOrderItem($cart, $oi);
                // เหตุใดการอัปเดตรายการสั่งซื้อจึงไม่ทำงาน ^^
              }
            }
          }
        }
      }
    }
  }

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา