如何使用Magento从Observer重定向
我正在使用一个观察者来捕捉那个事件:控制器\操作\后期调度\签出\一页\保存账单 我希望通过该事件检查客户的账单地址 我的问题是:当按下“继续”按钮时,此时如何向用户发送消息 我使用了:Mage::getSingleton'core/session'->addError'My message' 但是在刷新页面之前,消息不会显示。这里是第二个问题。 如何从该点重定向页面? 我没有运气使用:$this->_redirect'*/*/';和硬编码的网址没有运气。 理想情况下,我希望当客户按下“继续”按钮时,在我进行了一些检查之后,流程会停止,并显示一条消息。检查观察者,观察者按照预期工作 希望它有意义 编辑 这是我的代码。为了确保我做得正确: 模型/观察员如何使用Magento从Observer重定向,magento,redirect,magento-1.7,observers,Magento,Redirect,Magento 1.7,Observers,我正在使用一个观察者来捕捉那个事件:控制器\操作\后期调度\签出\一页\保存账单 我希望通过该事件检查客户的账单地址 我的问题是:当按下“继续”按钮时,此时如何向用户发送消息 我使用了:Mage::getSingleton'core/session'->addError'My message' 但是在刷新页面之前,消息不会显示。这里是第二个问题。 如何从该点重定向页面? 我没有运气使用:$this->_redirect'*/*/';和硬编码的网址没有运气。 理想情况下,我希望当客户按下“继续”按
class Company_Restrictions_Model_Observer {
public function notifyUser($observer) {
//Lot's off lines are tested here.Nothing seems to work..
$observer->getRequest()->setParam('return_url','http://www.google.com/');
}
}
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Company_Restrictions>
<version>0.1.0</version>
</Company_Restrictions>
</modules>
<global>
<models>
<company_restrictions>
<class>Company_Restrictions_Model</class>
</company_restrictions>
</models>
<helpers>
<company_restrictions>
<class>Company_Restrictions_Helper</class>
</company_restrictions>
</helpers>
<events>
<controller_action_postdispatch_checkout_onepage_saveBilling>
<observers>
<notify_user>
<type>singleton</type>
<class>Company_Restrictions_Model_Observer</class>
<method>notifyUser</method>
</notify_user>
</observers>
</controller_action_postdispatch_checkout_onepage_saveBilling>
</events>
</global>
</config>
重新编辑
在去毛刺之后,我发现很多函数都给了我错误。未定义的方法。。。例如:重定向、响应或正文。。有人知道为什么吗???看看@
我有一个成功重定向的观察者,我正在使用setRedirect方法:
public function moduleMethod(Varien_Event_Observer $observer)
{
// get the current front controller
$frontController = $observer->getEvent()->getFront();
if(.....)
{
$newUrl = ...;
$frontController->getResponse()->setRedirect($newUrl);
Mage::app()->getResponse()->sendResponse();
exit;
}
}
仅供参考,我将向您提供我从stackoverflow magento获得的有效答案: 我就是这样设法使它工作的
$controllerAction = $observer->getEvent()->getControllerAction();
$result = array();
$result['error'] = '-1';
$result['message'] = 'YOUR MESSAGE HERE';
$controllerAction->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
此代码将在以下情况下工作:
$url = YOUR_URL; // e.g. Mage::getUrl('customer/account/login')
Mage::app()->getResponse()
->setRedirect($url)
->sendResponse();
仍然不起作用..我试图捕捉的事件有问题吗?
$url = YOUR_URL; // e.g. Mage::getUrl('customer/account/login')
Mage::app()->getResponse()
->setRedirect($url)
->sendResponse();