Magento 重定向后丢失消息

标签 magento

我在处理 magento 消息时遇到问题。我正在构建自定义模块,理论上应该能够限制对商店某些部分的访问。我创建了一个观察者,它挂接到 controller_action_predispatch 事件并检查用户是否可以访问当前请求。如果无法访问该操作,观察者将重定向用户并设置错误信息。我想将重定向网址设置为客户来自的页面,以避免点击整个商店。我正在查看 HTTP_REFERER 并在设置后使用它,否则我会将客户重定向到主页。问题是,在后一种情况(主页重定向)中,一切都很好,但是当我根据引用者设置 url 时,我在消息框中看不到错误消息。

来自观察者的代码($name 变量是一个字符串):

Mage::getSingleton('core/session')->addError('Acces to '.$name.' section is denied');
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer()  : Mage::getUrl();
Mage::app()->getResponse()->setRedirect($url);

我发现有趣的是,如果我在观察者文件中进行任何更改并保存它,那么下一个失败并重定向到引用网址的请求将显示错误信息,但任何后续请求都会丢失消息。

我认为问题出在完整的网址和我的本地安装(我正在使用 .local 域),但所以我尝试添加

$url = str_replace(Mage::getBaseUrl(), '/', $url);

但这并没有帮助。

我还尝试使用 php header() 函数进行重定向,但也没有任何结果。

所有缓存均已禁用。触发该问题的工作流程如下:

  1. 我将访问任何可访问的页面(例如/customer/account)
  2. 点击购物车链接(此帐户的购物车已禁用)
  3. 返回/customer/account并显示错误消息
  4. 再次点击购物车链接
  5. 返回/customer/account,但没有错误消息

任何关于在哪里查看的提示将不胜感激。

最佳答案

//A Success Message
Mage::getSingleton('core/session')->addSuccess("Some success message");

//A Error Message
Mage::getSingleton('core/session')->addError("Some error message");

//A Info Message (See link below)
Mage::getSingleton('core/session')->addNotice("This is just a FYI message...");

//These lines are required to get it to work
session_write_close(); //THIS LINE IS VERY IMPORTANT!
$this->_redirect('module/controller/action');

// or
$url = 'path/to/your/page';
$this->_redirectUrl($url);

这将在 Controller 中工作,但如果您在发送输出后尝试重定向,那么您只能通过 javascript 来做到这一点:

<script language=”javascript” type=”text/javascript”>
window.location.href=”module/controller/action/getparam1/value1/etc";
</script>    

关于Magento 重定向后丢失消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13251078/

相关文章:

magento - 无法获取产品页面上的产品自定义属性值

运行 Magento 时 mySQL 由于内存不足而崩溃

magento - 根据 product_id 或 user_id(供应商)过滤订单

html - 将圆形 Logo 添加到 magento 2 标题

php - 在 Magento 中添加货币符号和价格之间的跨度

来自两个不同模块的 Magento block 覆盖

php - Magento:通过事件以编程方式更新购物车

javascript - 销售在 Magento 报告中不起作用

php - Magento权限-我无法通过Magento后端添加任何内容

php - Magento 网格 : Better way of using addColumn Actions?