【发布时间】:2015-08-09 12:20:12
【问题描述】:
我有一个观察者:<controller_action_predispatch_catalog_category_view>,它会在我的观察者中触发一个函数来检查用户限制。
如果不允许客户查看此类别,我想向他们显示默认的 Magento 404 错误页面。 这是我目前卡住的地方。
当我查找 404 页面控制器时:<Mage_Cms_IndexController>
它向我展示了这个功能“defaultIndex”:
$this->_forward('defaultIndex');
这是什么功能:
public function defaultIndexAction()
{
$this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
$this->getResponse()->setHeader('Status','404 File not found');
$this->loadLayout();
$this->renderLayout();
}
但在我的观察者中,我不能调用 loadLayout 和 renderLayout 方法,这很明显。
我不想使用 301/302 重定向到 404 页面,我想直接向用户展示它而不进行任何重定向。
我现在得到了什么:
Mage::app()->getFrontController()->getResponse()->setHeader('HTTP/1.1','404 Not Found');
Mage::app()->getFrontController()->getResponse()->setHeader('Status','404 File not found');
- 我需要渲染 404 页面而不是目录布局,但是我该怎么做呢?
任何建议将不胜感激。
【问题讨论】:
-
你有答案吗?我需要知道你是如何做到这一点的。请发布您的答案
标签: php magento http-status-code-404 magento-1.9 observers