【发布时间】:2011-08-26 17:49:58
【问题描述】:
我正在尝试获取最近添加到用户购物车中的产品的 ID。快速谷歌搜索发现了这个功能
Mage::getSingleton('checkout/session')->getLastAddedProductId(true);
这也用于 Mage_Checkout_Block_Cart_Crosssell。但是,当我尝试在自己的控制器中调用该函数时,它什么也不返回。 我试图通过
实例化一个核心会话Mage::getSingleton('core/session', array('name'=>'frontend'))
但是这种方法似乎不起作用。我还尝试创建 Crossell 块并将包含 getLastAddedProductId 函数的受保护方法设为 public,但是它返回 null 就像我尝试自己调用它时一样。
为了使用这个函数,我必须调用或实例化一些东西吗?这是我的源清单供参考。
class Mymodule_Addcartaftermath_ItemaddedController extends Mage_Core_Controller_Front_Action {
public function generatemessageAction() {
$parameters = $this->getRequest()->getParams();
if (isset($parameters['ajax_call'])) {
$latest_item_id = Mage::getSingleton('checkout/session')->getLastAddedProductId(true);
$response = array('response' => $latest_item_id);
echo json_encode($response);
} else {
$this->_redirect('/');
}
}
}
我尝试浏览源代码,特别是核心中的 checkout/model/session.php 文件,但我似乎找不到函数的定义。我还查看了它的父类定义,但在那里也找不到。
如果我无法使用此方法,是否有其他方法可以检索最近添加的项目?我知道这些项目是按顺序添加的,我也许可以从购物车中获取项目列表的最后一项,但是在用户将相同的项目添加到购物车的情况下,这实际上是增加了数量而不是实际数量商品本身(例如,用户在购物车中添加了一台笔记本电脑)
【问题讨论】:
-
我认为应该可以。但是要调试它,您是否尝试获取所有项目?看看?像这样的东西:shivakumariyer.blogspot.com/2011/05/…
标签: php magento e-commerce