Php 从购物车中删除项目后,Magento重定向到主页 问题:

Php 从购物车中删除项目后,Magento重定向到主页 问题:,php,magento,checkout,Php,Magento,Checkout,我们用的是Magento ver。1.7.0.1我们遇到了一个问题,用户从购物车中删除一个项目,购物车将重定向回主页,而不是传统上只返回到结帐页面(即使没有项目) 背景 我们在登台服务器上的子文件夹中设置了站点,它可以完美地工作 这两种情况之间可能会有什么不同?服务器本身非常相似。Ubuntu 10.04、PHP5.3+等 我只能认为这可能是一个令人沮丧的问题(但没有运气追踪到这一点) 我确实尝试了建议的“快速修复”,但遗憾的是,没有运气。因为这只发生在您的实时服务器上,而不是临时服务器上,似乎

我们用的是Magento ver。1.7.0.1我们遇到了一个问题,用户从购物车中删除一个项目,购物车将重定向回主页,而不是传统上只返回到结帐页面(即使没有项目)

背景 我们在登台服务器上的子文件夹中设置了站点,它可以完美地工作

这两种情况之间可能会有什么不同?服务器本身非常相似。Ubuntu 10.04、PHP5.3+等

我只能认为这可能是一个令人沮丧的问题(但没有运气追踪到这一点)


我确实尝试了建议的“快速修复”,但遗憾的是,没有运气。

因为这只发生在您的实时服务器上,而不是临时服务器上,似乎不太可能是代码相关的问题。尝试在FireFox中安装并启用扩展插件TamperData后执行此操作。当你一步一步地完成这些步骤时,你应该能很好地了解到站点试图将你发送到哪里,幸运的是,你会在那里看到一个额外的重定向,它会立即点击正在发生的事情。除此之外,请确保已启用日志记录(系统>配置>开发人员>日志设置),并检查是否没有发生实际错误

deleteAction调用_redirectReferer,传入
*/*
(这反过来应该成为
签出/购物车
)。_redirectReferer函数遵循3条路径

  • 如果有推荐人url,则重定向到该url
  • 如果没有推荐人url,但存在默认url,则重定向到该url
  • 否则重定向到主页

  • 基于这些事实,您可能会立即假定步骤3正在发生,但由于deleteAction正在传递参数,因此不可能通过步骤2,因为始终存在默认url。

    我通过以下步骤解决了此问题

    导航到“app\code\core\Mage\Checkout\controllers\CartController.php”。

    找到“
    deleteAction()
    ”函数,该函数将如下所示

    公共功能删除操作() {

    您需要将行
    “$this->\u redirectReferer(Mage::getUrl('*/*');”
    更改为
    $this->\u redirect('checkout/cart');
    。因此,现在函数如下所示

    public function deleteAction()
        {
            $id = (int) $this->getRequest()->getParam('id');
            if ($id) {
                try {
                    $this->_getCart()->removeItem($id)
                      ->save();
                } catch (Exception $e) {
                    $this->_getSession()->addError($this->__('Cannot remove the item.'));
                    Mage::logException($e);
                }
            }
            $this->_redirect('checkout/cart');
        }
    
    以上不是一种提供的方法。我只是解释了调试的位置。尝试并重写上述函数。这是提供的方法

    有关更多信息,请参阅此

    谢谢

    public function deleteAction()
        {
            $id = (int) $this->getRequest()->getParam('id');
            if ($id) {
                try {
                    $this->_getCart()->removeItem($id)
                      ->save();
                } catch (Exception $e) {
                    $this->_getSession()->addError($this->__('Cannot remove the item.'));
                    Mage::logException($e);
                }
            }
            $this->_redirect('checkout/cart');
        }