【问题标题】:When removing an item from the cart, Magento redirects to store home page instead of /checkout/cart/从购物车中删除商品时,Magento 重定向到商店主页而不是 /checkout/cart/
【发布时间】:2011-07-10 14:03:24
【问题描述】:

我正在设置一个 Magento 1.4.2 购物车来替换旧版本 (1.1.6)。我目前正在开发机器上工作,当我的购物车中有多个项目并使用其中一个产品上的“删除”按钮时,该项目被删除,我通过 302 响应代码重定向到基本 URL store,而不是 '/checkout/cart/'(旧版购物车的工作方式)。

我一直在试图找出导致此重定向的两个购物车之间的不同之处。关于我的设置的一些说明可能相关,也可能不相关

  • 有 2 个网站/商店/商店视图
  • 我当前使用的商店视图是通过子 URL 和单独的 index.php 文件访问的。主商店 URL 是 https://www.thestore.com/,我正在使用的商店可通过 https://www.thestore.com/second-store/ 访问index.php/。如果您不熟悉这种方法,请按照以下方法完成:Store views by index.php
  • 旧的购物车(运行 1.1.6)在稍微不同的服务器设置上运行,您可以放心地假设设置中的任何事情都是可能的 - 例如,可以修改核心 Mage 代码。

我正在寻找有关在哪里查看的任何提示 - 通过管理面板进行 Magento 配置、local.xml 更改、Apache 重写规则...有关如何找出为什么这个新购物车不存在的任何提示当我从购物车中删除产品时重定向到 /store/checkout/cart/

如果您需要更多详细信息,我很乐意提供。我们有一个有点时髦的设置,它已经真正被破解了,如果听起来我们做错了什么,我也愿意接受有关如何设置的建议。谢谢!

【问题讨论】:

  • 管理 -> 系统 -> 配置 -> 销售 -> 结帐:购物车部分。 “将产品重定向添加到购物车后”。这是否为两个商店视图启用?您可能还需要检查控制器并禁用所有第 3 方模块输出。很可能是由于您的升级路径。
  • @B00MER 您提到的设置已启用。我还尝试禁用第 3 方模块输出,但没有运气,似乎不需要修改控制器。通过代码跟踪,似乎 CartController.php 的 deleteAction 中的这段代码:$this->_redirectReferer(Mage::getUrl('*/*')); 删除后应该重定向到购物车,但事实并非如此。

标签: php redirect magento shopping-cart


【解决方案1】:

如果您检查了 B00MER 建议的设置,那么我认为您的下一步需要是通过请求处理流程进行实时调试。阅读我的previous answer,了解有关设置 Magento 调试环境的一些建议。

该答案也很重要,因为它涉及CartController 中的updatePostAction,在这种情况下负责的方法相同。

【讨论】:

  • 感谢您的提示,我将进一步研究调试。在 FireBug 中查看生成的请求,我看不到在单击“X”(删除)按钮时如何使用 updatePostAction - 我看到的只是对 /store/checkout/cart/delete/id/#/ 的 GET 请求。我错过了什么吗?
【解决方案2】:

这可能是旧消息,但我在 2011 年 12 月的 magento 1.5.10 中遇到了同样的问题。 我通过编辑成功解决了这个问题

CartController.php:

函数删除操作

替换

$this->_redirectReferer(Mage::getUrl('*/*'));

$this->_redirect('checkout/cart');

不要复制和粘贴这个,确保你输入它,并在结帐/购物车周围使用单引号

【讨论】:

  • 并确保正确覆盖控制器方法,而不是直接在核心中更改它。
【解决方案3】:

为了重写核心文件,我们需要创建一个模块并进行以下更改。

public function deleteAction()
{
    if ($this->_validateFormKey()) {
        $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);
            }
        }
    } else {
        $this->_getSession()->addError($this->__('Cannot remove the item.'));
    }

    $this->_redirect('checkout/cart');
}

请参考我的教程一步一步的解释。

http://www.pearlbells.co.uk/remove-item-magento-cart-redirects-homepage/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2020-03-23
    • 1970-01-01
    • 2018-10-19
    • 2013-10-17
    • 2017-04-03
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多