基本上我在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('*/*'));
}
修补程序在我的文件中覆盖了什么导致此问题?
答案 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)
我做了什么?
sh patch_name.sh -R
sh patch_name.sh
我希望有帮助