在Drupal 8 Commerce中,如何以编程方式从当前购物车获取订单ID和产品变体ID?

时间:2017-12-22 08:55:34

标签: drupal-8 drupal-commerce

我想得到:

  • 当前用户的订单ID;
  • 当前用户购物车中的所有产品差异ID;
  • 产品变化的价格;
  • 图片;
  • 标题

我有以下内容:

$store_id = 1;
    $order_type = 'default';
    $entity_manager = \Drupal::entityManager();
    $cart_manager = \Drupal::service('commerce_cart.cart_manager');
    $cart_provider = \Drupal::service('commerce_cart.cart_provider');
    $store = $entity_manager->getStorage('commerce_store')->load($store_id);

    $cart = $cart_provider->getCart($order_type, $store);

    if(isset($cart)){
        $itemNum = count($cart->getItems());
        ($itemNum > 0) ? $variables['items_in_cart'] = $itemNum : '';
    }

        $cart .= 'Subtotal: '.$cart->getSubtotalPrice();
        $cart .= '<br>Total price: '.$cart->getTotalPrice();
        $cart .= '<br>Created: '.$cart->getCreatedTime();
        $cart .= '<br>Customer id: '.$cart->getCustomerId();
        $cart .= '<br>Email: '.$cart->getEmail();
        $cart .= '<br>IP address: '.$cart->getIpAddress();
        $cart .= '<br>Item num. in cart: '.$itemNum;

1 个答案:

答案 0 :(得分:1)

您需要加载Product store, cart and variation entity,需要从加载的产品中获取产品版本ID,然后提取Order ID for the current user, All product variation ID from the current users cart, Prices for Product variations, Images, Titles

$product_variation = $event->getEntity();
$current_store = \Drupal::service('commerce_store.current_store');
$store = $current_store->getStore();
$cart_provider = \Drupal::service('commerce_cart.cart_provider');
$cart = $cart_provider->getCart("default", $store);

    foreach ($cart->getItems() as $order_item) {
        $productType = $order_item->getPurchasedEntity()->get('type')[0]->get('target_id')->getValue();
           // ksm("Order Item", $order_item);
           // For getting custom and variation field value.
           //$field_custom_value = $product_variation->get('field_custom_value')[0]->get('target_id')->getValue();
              $order_no = $order_item->get('purchased_entity')[0]->get('target_id')->getValue();
               ksm("Order No", $order_no);
              $order_no_id = $order_item->get('order_item_id')[0]->get('value')->getValue();
               ksm("Order No Id", $order_no_id);

    }