1

我无法从观察者在 Magento 中创建工作重定向。除此之外,我需要了解为什么像我们在控制器中所做的异常在观察者中不起作用。

在控制器中完成的典型异常如下(adminhtml 控制器)

$message = $this->__('Exception Message.');
Mage::getSingleton('adminhtml/session')->addError($message);
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;

在博客的某处,我读到了以下从观察者重定向的方法。

Mage::getSingleton('core/session')->addError('Exception Message.');
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
Mage::app()->getResponse()->sendResponse();
exit;

在使用观察者和控制器时,我不明白基本的重定向差异。

为什么在观察者中使用控制器重定向不起作用。

请帮我解释一下。

提前非常感谢。

4

1 回答 1

0

请参阅下面的链接,我还发布了可能对您有所帮助的代码。

来源:http ://aaronbonner.io/post/418012530/redirects-in-magento-controllers

Magento 控制器中的重定向 在 Zend Framework 控制器中,要输出 html 以外的内容,您需要禁用 ViewHelper 默认值以及 ZF 通常编织的其他一些魔法。

在 Magento 中,同样的事情也适用于控制器重定向。

我注意到在 PHP 5.2 上重定向似乎被忽略了,而我的 Macports 5.3 设置它起作用了。原来我错过了一个技巧,因此在 Magento 中正确重定向如下:

MyPackage/MyModule/controllers/MyController.php

$this->_redirectUrl($this->getUrl('http://www.someurl.com/someresource'));  
$this->setFlag('', self::FLAG_NO_DISPATCH, true);  
return $this;

如果没有 setFlag 调用,您的重定向将被忽略。返回调用停止任何进一步的代码执行,并看到您的重定向被执行。

于 2013-12-24T13:59:18.397 回答