php - Magento Redirect from Observer 始终有效

标签 php events magento newsletter

我无法在 Magento 中从观察者创建有效的重定向。

据我所知,有很多事件都获得了响应对象(在 $observer 对象中)。 另一种方法是使用类似

Mage::app()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));

如此处所述 https://stackoverflow.com/a/4730200/1700048由伟大的艾伦 Storm 。

不幸的是,这对我不起作用,即使我像这样添加 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 在这种情况下不发送响应?

感谢您的帮助:)

最佳答案

这可行,但不是 super 优雅:

Mage::getSingleton('core/session')->addError('Email is spam!');
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
Mage::app()->getResponse()->sendResponse();
exit;

关于php - Magento Redirect from Observer 始终有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236912/

相关文章:

php - PHP 中的 CSS 压缩器

php - 如何使用输入类型日期获取日期?

javascript - 模板不触发事件的主干 View

javascript - 手动触发触摸事件

javascript - 事件处理程序没有响应

magento - 创建 Magento 后端字段只读

php - 如何知道 "fputcsv"是否执行成功

php - SQL select查询与数据计算

magento - 目录价格规则与购物车规则

php - 如何在 php 函数获取的文本中强制使用 css 段落?