gpt4 book ai didi

php - 获取最后添加到 magento 购物车中的产品的 ID

转载 作者:可可西里 更新时间:2023-10-31 22:58:27 25 4
gpt4 key购买 nike

我正在尝试获取最近添加到用户购物车的产品的 ID。快速谷歌搜索揭示了这个功能

Mage::getSingleton('checkout/session')->getLastAddedProductId(true);

这也用于 Mage_Checkout_Block_Cart_Crosssell。但是,当我尝试在我自己的 Controller 中调用该函数时,它什么也不返回。我试图通过

实例化一个核心 session
Mage::getSingleton('core/session', array('name'=>'frontend'))

但是这种方法似乎行不通。我还尝试创建 Crossell block 并使环绕 getLastAddedProductId 函数的 protected 方法公开,但是它返回 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 文件,但我似乎找不到该函数的定义。我还查看了它的父类定义,但也没有找到它。

如果我无法使用此方法,是否有另一种方法可以检索最近添加的项目?我知道这些项目是按顺序添加的,我也许只能从购物车中获取项目列表的最后一项,但是如果用户将相同的项目添加到购物车本质上是增加数量而不是实际数量,这将不起作用项目本身(例如,当已经有一台笔记本电脑时,用户将一台笔记本电脑添加到购物车中)

最佳答案

调用

Mage::getSingleton('checkout/session')->getLastAddedProductId(true);

其实就是读取session变量后清空。 Magento 广泛使用魔术方法。在这种情况下,您使用的是 __call 魔法方法,该方法又使用 getData() 方法。在 Mage_Core_Model_Session_Abstract_Varien 中,您会看到它们覆盖了 getData() 的默认行为,期望第二个参数是 bool 值(getData 的第一个参数是您要查找的值的键名称)。该 bool 值是一个标志,告诉 session 在读取后清除变量。

您始终可以监听 checkout_cart_product_add_after 事件并将商品添加到您自己的 session 变量中。该事件实际上是在调用 setLastAddedProductId() 之前在线上触发的。

关于php - 获取最后添加到 magento 购物车中的产品的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com