SUPEE 7405并且无法取出购物车项目

时间:2016-01-23 14:29:55

标签: magento magento-1.7 patch

基本上我在SUPEE 7405更新后遇到了这个问题。每当我向购物车添加内容然后点击AJAX购物车中的删除项目时,它会告诉我"无法删除该项目。"

我必须刷新页面,然后项目成功删除。 基本上添加然后立即删除item =不工作。我需要添加,刷新页面(或转到网站的其他页面),然后单击删除。

我注意到修补程序覆盖了 应用程序/代码/核心/法师/结帐/控制器/ CartController.php

补丁之前的代码

/**
 * Delete shoping cart item action
 */
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->_redirectReferer(Mage::getUrl('*/*'));
}

补丁后的代码

  /**
 * Delete shoping cart item action
 */
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->_redirectReferer(Mage::getUrl('*/*'));
}

修补程序在我的文件中覆盖了什么导致此问题?

3 个答案:

答案 0 :(得分:2)

您需要更新购物车项目模板[design_package / theme] /template/checkout/cart/item/default.phtml

查找<a href="<?php echo $this->getDeleteUrl() ?>" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Remove Item')) ?>" class="btn-remove btn-remove2"><?php echo $this->__('Remove Item') ?></a>

替换为

<a href="<?php echo $this->getDeleteUrl() ?>form_key/<?php echo $formKey = Mage::getSingleton('core/session')->getFormKey();?>" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Remove Item')) ?>" class="btn-remove btn-remove2"><?php echo $this->__('Remove Item') ?></a>

答案 1 :(得分:0)

正如您在deleteAction函数中所看到的,SUPEE7405为购物车删除添加了表单密钥验证,以防止恶意的跨站点请求。如果您在主题中覆盖了购物车项目模板(checkout / cart / item / default.phtml),或者正在使用覆盖此模板的主题,则需要更新它以包含formkey隐藏输入字段。您可以从base/default/checkout/cart/item/default.phtml开始提取相关更改。

答案 2 :(得分:-2)

在我的案例中,编译已启用。所以我意识到编译的文件不兼容或认可新补丁(SUPEE 7405)

我做了什么?

  1. 删除补丁sh patch_name.sh -R
  2. 禁用编译
  3. 清除magento缓存
  4. 再次应用补丁sh patch_name.sh
  5. 再次清除magento缓存
  6. 启用编译
  7. 运行编译过程
  8. 我希望有帮助