2016-01-23 1 views
2

В основном у меня возникла проблема после обновления SUPEE 7405. Всякий раз, когда я добавляю что-то в корзину и затем удаляю элемент в корзине AJAX, он сообщает мне «Не удается удалить элемент».SUPEE 7405 и не может удалить корзину Товар

Я должен обновить страницу, а затем элемент успешно удаляется. В основном добавление и мгновенное удаление элемента = Не работает. Мне нужно добавить, обновить страницу (или перейти на другую страницу сайта), а затем удалить.

я заметил, что патч отменяет приложения/код/​​ядро ​​/ Mage/Checkout/Контроллеры/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. процесс
  8. Откомпилировать

Надеюсь, что это поможет

+0

Просто попробовал, не помогает, моя компиляция в любом случае отключена. Спасибо за идею! – Icon

+0

Это действительно сработало для меня. Благодаря! – rltegantvoort

0

Как вы можете видеть в функции deleteAction, SUPEE7405 добавил проверку ключа формы для удаления корзины для предотвращения вредоносных запросов на межсайтовый сайт. Если вы переопределили шаблон элемента корзины (checkout/cart/item/default.phtml) в своей теме или используете тему, которая отменяет этот шаблон, ее необходимо будет обновить, включив в нее скрытое поле ввода формы. Вы можете перетащить соответствующие изменения с base/default/checkout/cart/item/default.phtml.

+0

Не могли бы вы рассказать мне, какой именно ключ формы/Какой код использовать? (Я все еще учусь) :) – Icon

+0

Если вы откроете файл, к которому я привязан ('base/default/checkout/cart/item/default.phtml'), и версию в текущей теме, затем сравните кнопку« удалить » , вы заметите, что в базе/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

Смежные вопросы