【问题标题】:Magento redirects to homepage after item removed from cart从购物车中删除商品后,Magento 重定向到主页
【发布时间】:2012-09-14 14:32:52
【问题描述】:

问题

我们正在使用 Magento 版本。在 1.7.0.1 版本中,我们遇到了一个问题,即用户从购物车中删除了一个商品,并且购物车将重定向回主页,而不是通常只返回到结帐页面(即使商品为零)。

背景

我们在登台服务器上的子文件夹中设置了站点,并且可以正常工作。

如果发生这种情况,两者之间可能有什么不同?服务器本身非常相似。 Ubuntu 10.04、PHP 5.3+ 等

我只能认为这可能是一个路径问题(但没有运气追踪)

我确实尝试了建议 here 作为“快速修复”的方法,但可惜,没有运气。

【问题讨论】:

    标签: php magento checkout


    【解决方案1】:

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

    deleteAction 调用 _redirectReferer,传入 */*(它应该反过来变成 checkout/cart)。 _redirectReferer 函数遵循 3 条路径。

    1. 如果有引荐来源网址,则重定向到该网址。
    2. 如果没有引荐来源网址,但有默认网址,则重定向到该网址
    3. 否则重定向到首页。

    基于这些事实,您可能会立即假设第 3 步正在发生,但由于 deleteAction 正在传递一个参数,因此应该不可能通过第 2 步,因为总会有一个默认 url。

    【讨论】:

      【解决方案2】:

      我通过以下步骤解决了这个问题。

      导航到"app\code\core\Mage\Checkout\controllers\CartController.php".

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

      公共函数 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->_redirectReferer(Mage::getUrl('*/*'));
      }
      

      您需要将行 "$this->_redirectReferer(Mage::getUrl('*/*'));" 更改为 $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');
          }
      

      上述方法不是提供的方法。我只是解释了调试的地方。尝试create a module 并覆盖上述函数。这是提供的方式。

      更多信息请参考link

      谢谢

      【讨论】:

        猜你喜欢
        • 2011-07-10
        • 2017-04-03
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-20
        • 2018-10-19
        相关资源
        最近更新 更多