2012-06-21 2 views
0

Я наблюдаю событие, которое запускается, когда товар добавлен в корзину. Это учебник, который я использовал для него: http://inchoo.net/ecommerce/magento/dispatching-before-and-after-events-to-magento-core-actions/Magento: остановить процесс добавления в корзину в наблюдателе?

Теперь при некоторых условиях я хочу остановить процесс добавления продукта в корзину. Я попытался сделать исключение, но это дает мне Произошла ошибка при обработке вашего запроса сообщение об ошибке. Проверка отчета, созданного Magento, ничего мне не говорит. Как еще я могу остановить процесс добавления?

Это мой код:

public function hookToAddToCartBefore($observer) { 
    ... 
    if(somecondition) { 
     Mage::throwException('some message'); 
    } 
} 

ответ

1

Особенности:

  • Очистить сообщение об ошибке после
  • Пропускает все "добавить в корзину" Код
  • редирект на страницу вашего выбора после

После попытки e очень мыслимая вещь, чтобы попытаться изящно прервать «добавить в корзину», мне удалось объединить фрагменты и открыть флаг FLAG_NO_DISPATCH, пройдя через источник. Другие попытки изменить параметры или установить перенаправление будут заменены некоторым кодом далее в процессе «добавить в корзину».

Mage::app()->getResponse()->setRedirect($store_product->getProductUrl()); 
    Mage::getSingleton('checkout/session')->addError(Mage::helper('checkout')->__('Sorry, the price of this product has been updated. Please, add to cart after reviewing the updated price.')); 
    $observer->getControllerAction()->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); 

Вместо ошибки, вы можете иметь уведомление:

Mage::getSingleton('core/session')->addNotice('Sorry, this product is currently not available...'); 
Смежные вопросы