2016-01-23 63 views
2

基本上,我在SUPEE 7405更新后遇到了这个问题。每当我向购物车添加东西,然后点击AJAX购物车中的删除项目时,它都会告诉我“无法删除该项目”。SUPEE 7405并且不能删除购物车商品

我必须刷新页面,然后项目才能成功删除。 基本上添加,然后立即删除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('*/*')); 
} 

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

回答

-2

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

我做了什么?

  1. 删除补丁sh patch_name.sh -R
  2. 禁用编译
  3. 清除Magento的缓存
  4. 应用补丁再次sh patch_name.sh
  5. 清除Magento的缓存再次
  6. 启用编译
  7. 运行编译过程

我希望帮助

+0

刚刚试了一下,反正,我的编译是Disabled。感谢您的想法! – Icon

+0

这实际上为我工作。谢谢! – rltegantvoort

0

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

+0

您能告诉我哪个表单键正确/我应该使用哪个代码? (我还在学习):) – Icon

+0

如果打开我链接到的文件('base/default/checkout/cart/item/default.phtml')和当前主题中的版本,则比较“删除”按钮,您会注意到base/default中的一个具有不同的HTML结构,使用包含表单键的onclick属性。这就是您需要添加到您的模板版本中以与修补后的控制器保持一致。 –

+0

好的,我会尝试并回复结果:) – Icon

2

您需要更新车项目模板[design_package /主题] /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> 
+0

感谢您的可能的解决方案。但它似乎没有工作在我的情况下,因为我已安装ajax。我已经打开了一个不同的主题,解释侧栏删除按钮面临的问题。 http://magento.stackexchange.com/questions/103764/supee-7405-add-form-key-to-sidebar-default-phtml – Icon