【问题标题】:How to get Quote Item Id after adding a product to cart?将产品添加到购物车后如何获取报价项目 ID?
【发布时间】:2014-07-29 14:26:12
【问题描述】:

每次将产品添加到购物车时,我都想要报价商品 ID。我尝试了许多事件,它们返回报价项目对象,但对象不包含报价项目 ID,因为它仅在购物车保存到数据库时才存在。那么是否有任何事件会返回带有报价项 ID 的报价项对象?

我使用了以下事件

checkout_cart_product_add_after
sales_quote_add_item

但它不会在

中返回quote_item_id
public function addItemToSalesModelInfo(Varien_Event_Observer $observer){
    $item = $observer->getEvent()->getQuoteItem();
}

【问题讨论】:

  • 发布您迄今为止尝试过的工作和代码,以及您遇到问题的地方

标签: magento checkout cart quote


【解决方案1】:

您正在使用正确的事件,即

checkout_cart_product_add_after

要访问报价项目ID,您需要使用,

$item = $observer->getQuoteItem()

您可以访问所有报价项目信息,例如

$item->getProductId()等..

【讨论】:

  • 嗨,它会返回我添加到购物车的产品而不是引用项目 ID。
  • 是的,因为你有 $item 对象,它是一个 sales_flat_quote_item 实例
  • 打印 $item 对象,你会得到所有的细节。
  • 仅当商品已存在于购物车中时,商品 ID 才可用。如果它是全新的,则该项目将没有 ID。
【解决方案2】:

仅当购物车中已存在合适的商品时,商品 ID 才可用 checkout_cart_product_add_after。您实际上必须分两步工作。收听checkout_cart_product_add_after 并为该项目添加一个标志。

$item = $observer->getQuoteItem();
$item->setLastAdded(true);

然后收听sales_quote_item_save_after,如果设置了标志,则将 id 添加到会话中(或执行任何操作)。

$item = $observer->getItem();
if ($item->getLastAdded()) {
    Mage::getSingleton('checkout/session')->setLastAddedItemId($item->getId());
}

【讨论】:

  • 如果购物车中已经存在合适的商品,则“商品 ID 仅在 checkout_cart_product_add_after 可用”有技术原因吗?
【解决方案3】:

将产品添加到购物车后获取报价和商品数量。

//Save your cart
$cart->save();

//use checkout/session
$cart1=Mage::getSingleton('checkout/session');
$cart1->setCartWasUpdated(true);

// Quote ID
$result_array["quoteid"]=$quoteid=$cart1->getQuoteId();

// Items count
$result_array["items_count"]=Mage::helper('checkout/cart')->getCart()->getItemsCount();

【讨论】:

    【解决方案4】:

    要获取报价 ID 和报价的项目 ID,您可以使用以下代码。

    $currentcart = Mage::getModel('checkout/cart');
    $quote = $currentcart->getQuote();
    $quoteItemId = $quote->getEntityId();
    

    获取报价单的商品id

    $quoteItems = $quote->getAllVisibleItems();
    foreach ($quoteItems as $item) {
    $ItemId = $item->getId();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2011-05-02
      • 2017-04-27
      • 1970-01-01
      • 2012-06-10
      • 2019-03-11
      • 2012-06-09
      相关资源
      最近更新 更多