Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Magento从Observer重定向_Magento_Redirect_Magento 1.7_Observers - Fatal编程技术网

如何使用Magento从Observer重定向

如何使用Magento从Observer重定向,magento,redirect,magento-1.7,observers,Magento,Redirect,Magento 1.7,Observers,我正在使用一个观察者来捕捉那个事件:控制器\操作\后期调度\签出\一页\保存账单 我希望通过该事件检查客户的账单地址 我的问题是:当按下“继续”按钮时,此时如何向用户发送消息 我使用了:Mage::getSingleton'core/session'->addError'My message' 但是在刷新页面之前,消息不会显示。这里是第二个问题。 如何从该点重定向页面? 我没有运气使用:$this->_redirect'*/*/';和硬编码的网址没有运气。 理想情况下,我希望当客户按下“继续”按

我正在使用一个观察者来捕捉那个事件:控制器\操作\后期调度\签出\一页\保存账单

我希望通过该事件检查客户的账单地址

我的问题是:当按下“继续”按钮时,此时如何向用户发送消息

我使用了: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();