【发布时间】:2012-10-25 13:44:19
【问题描述】:
我在 Magento 中从观察者创建工作重定向时遇到问题。
据我所知,有很多事件都带有响应对象(在$observer 对象中)。
另一种方法是使用类似的东西
Mage::app()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
正如伟大的 Alan Storm 在这里提到的 https://stackoverflow.com/a/4730200/1700048。
不幸的是,这对我不起作用,即使我像这样添加sendResponse():
Mage::app()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'))->sendResponse();
例如:
我想阻止某些电子邮件地址订阅时事通讯。
因此我为newsletter_subscriber_save_before 事件创建了一个观察者。
在我的观察者方法中,我检查了一些情况,如果它们触发,我想阻止保存时事通讯订阅。 我的计划是添加这样的错误:
Mage::getSingleton('checkout/session')->addError('Email is spam!');
然后让当前页面重新加载(显示错误消息)并使用如上所示的重定向(示例中的checkout/cart 只是为了看到它确实有效)。
很遗憾,重定向不起作用。
为什么sendResponse 在这种情况下不发送响应?
感谢您的帮助:)
【问题讨论】:
-
最接近解决方案的方法似乎在这里讨论:magentocommerce.com/boards/viewthread/15792/#t325035 Mage::app()->getResponse()->setRedirect($url);法师::app()->getResponse()->sendResponse();出口; exit() 对于此工作至关重要。不幸的是,在某些情况下,这会导致一些错误,包括回滚错误。我不确定它是否足够干净,可以作为通用解决方案的基础。
-
对于 Magento 2 我们能做什么?
标签: php events magento newsletter