gpt4 book ai didi

Magento如何在扩展覆盖根布局节点时从 Controller 触发404重定向

转载 作者:行者123 更新时间:2023-12-04 04:57:08 26 4
gpt4 key购买 nike

我已经为 Magento 编写了一个扩展,它将在某些情况下从 Controller 启动 404 重定向。 Controller 中导致 404 重定向的代码是:

$this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
$this->getResponse()->setHeader('Status','404 File not found');
$pageId = Mage::getStoreConfig('web/default/cms_no_route');
if (!Mage::helper('cms/page')->renderPage($this, $pageId)) {
$this->_forward('defaultNoRoute');
}

此代码通过 URL www.mysite.com/mymodule/index/action?name=value 访问,重定向是基于“值”触发的。

但是,因为我的模块包含覆盖根节点的布局更新:
<layout version="0.1.0">
<mynamespace_mymodule_index_action>
<block type="mymodule/list" name="root" template="mynamespace/mymodule/list.phtml" output="toHtml" />
</mynamespace_mymodule_index_action>
</layout>

404 重定向显示一个空白(白色)页面,其中包含以下 HTML:
<head>
</head>
<body>
<div id="outerdivshade">
<div id="outerdivpadding">
<div class="wrapper">
<div class="page">
<div class="main-container col2-left-layout">
<div class="main">
<div class="col-main"></div>
<div class="col-left sidebar"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>

我猜测通过更新根节点,我留下了重定向代码无法使用的布局结构来创建完整的 404 页面。

通过删除 if 语句并只留下代码:
$this->_forward('defaultNoRoute');

一切正常,但我不明白这样做的利弊。

有趣的是,上面的代码在 Magento 1.6 上可以正常工作,但在 1.7 上却不行。

对于包含有效 404 重定向的正确方式的任何评论,我将不胜感激,但仍然允许我在布局中使用自己的根节点。

谢谢

最佳答案

要显示 404 页面,您可以调用 norouteActionMage_Core_Controller_Varien_Action类(class)。

$this->norouteAction();
return;

404页面可以在后台编辑。该页面的标题为 404 Not Found 1 .
您还可以将自定义布局更新 XML 放在那里。

关于Magento如何在扩展覆盖根布局节点时从 Controller 触发404重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20729685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com