【问题标题】:How do I get in Magento the current order ID whlie on the products page?如何在产品页面上获取 Magento 的当前订单 ID?
【发布时间】:2012-11-21 10:12:12
【问题描述】:

我在显示我在 Magento 商店中可用的产品的页面上。如果我继续将订单添加到我的购物车并在最后购买,我想获取订单的当前 ID。

由于每个说的订单不存在并且多个人可以同时购买,我必须以某种方式计算订单 ID,同时确保它不会与另一个同时下订单的人发生冲突.

另一件事就像我提到的那样,这是在产品列表页面(/../../../../../template/catalog/product/list.phtml)上,因此每个“订单”说(我之前提到过)不存在。

如何以最佳方式获得未使用的订单 ID?

【问题讨论】:

  • 当您将产品添加到购物车时,您会获得一个报价 ID。开始结帐流程后,您会获得一个订单 ID(围绕付款信息)
  • 此报价 ID 是针对每个产品还是针对购物车?这将是完美的购物车。
  • 报价存储在您的购物车会话中。请参阅stackoverflow.com/questions/4625688/getquote-function-magento
  • 该页面只返回一个数组。报价 ID 是否在数组中?我将如何访问它(除非它有一个名为“qUoTe Id”的字段或我不知道的类似内容)?我需要一个字符串(至少),它是每个购物车的唯一标识符。

标签: magento


【解决方案1】:

在 Magento 中,在购物车上创建报价对象时,会创建一个报价对象,并且对于您添加的每个项目都有一个报价项目对象。

您可以从会话中获取当前报价ID

$session        = Mage::getSingleton('checkout/session');
$quote_id       = $session->getQuoteId();

然后加载 sales_quote 对象

$item_quote     = Mage::getModel('sales/quote')->load($quote_id);

这样,您可以轻松访问与报价表相关的任何属性。

您可以通过以下方式访问购物车中的商品

$items_in_cart      = $quote->getAllItems();

然后循环运行

foreach ($items_in_cart as $item) { 

  echo 'ID: '.$item->getProductId().'<br />';
  echo 'Name: '.$item->getName().'<br />';
  echo 'Sku: '.$item->getSku().'<br />';
  echo 'Quantity: '.$item->getQty().'<br />';
  echo 'Price: '.$item->getPrice().'<br />';

}

希望这会有所帮助! 有关更多参考,您可以参考这里 http://inchoo.net/ecommerce/magento/magento-quote-order-invoice-workflow/

【讨论】:

  • 解决方案看起来很有趣,我将代码添加到我的 phtml 页面:&lt;?php $_productCollection=$this-&gt;getLoadedProductCollection(); $_helper = $this-&gt;helper('catalog/output'); $session = Mage::getSingleton('checkout/session'); $quote_id = $session-&gt;getQuoteId(); $item_quote = Mage::getModel('sales/quote')-&gt;load($quote_id); 然后我尝试打印出 $item_quote 但它显示为空白。所以它似乎工作不正常......?>
  • 您的购物车中有商品吗?
  • 尝试回显 echo $quoteId =Mage::getSingleton('checkout/session')->getQuoteId();它打印什么吗?
  • 就像你评论的如果我的购物车是空的,$quoteId =Mage::getSingleton('checkout/session')-&gt;getQuoteId(); 不会打印任何东西。如果它有项目,我需要计算它会生成什么数字。我需要一些东西来识别我的购物车和/或订单。
  • 是的,当初始化购物车时,表 sales_flat_quote 中会出现一个条目,其中保存了有关当前报价的所有信息。有关添加的项目的信息进入 sales_flat_quote_item,您可以通过创建Mage::getModel('sales/quote_item) 的对象。希望这可以消除您的疑问。
【解决方案2】:

看看here创建一个订单,你可以创建一个订单,当你保存你的新订单时得到下一个订单ID。

【讨论】:

  • 我真的不需要创建一个新的,因为 Magento 会自动执行此操作。我需要一些如何将我的购物车/订单识别为唯一的。
猜你喜欢
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多