找不到 magento 控制器
magento controller not found
我已经在我的模块中设置了一个控制器,以便将订单导出选项卡添加到我的安装中:
在config.xml中:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<orderexport>abc_Orderexport_index2</orderexport>
</modules>
</args>
</adminhtml>
</routers>
<layout>
<updates>
<orderexport>
<file>orderexport.xml</file>
</orderexport>
</updates>
</layout>
</admin>
在adminhtml.xml中:
<?xml version="1.0"?>
<config>
<menu>
<sales>
<children>
<orderexport>
<title>Order Export</title>
<sort_order>20</sort_order>
<action>adminhtml/index2</action>
</orderexport>
</children>
</sales>
</menu>
<acl>
<resources>
<admin>
<children>
<sales>
<children>
<orderexport>
<title>Order Export</title>
<sort_order>20</sort_order>
</orderexport>
</children>
</sales>
</children>
</admin>
</resources>
</acl>
</config>
并在 controllers/Adminhtml/Index2Controller.php 文件中
class abc_Orderexport_Adminhtml_Index2Controller extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
然而,完成所有这些操作后,每当我单击按钮 "Order Export" 时,它都会将我重定向到 404 页面。这意味着 Magento 找不到控制器,但不知道为什么。
当我将控制器从 index2 重命名为 index(Index2Controller.php 到 IndexController.php)时,我没有被重定向到 404 页面,但是管理面板的仪表板只是重新加载。
我真的不知道我的错误在哪里,我很高兴能得到任何正确方向的提示。
这是您必须解决的问题:
in config.xml
:你不得不说你的模块应该在 adminhtml 区域中使用,你必须尊重 CamelCase,它应该是这样的:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Abc_Orderexport after="Mage_Adminhtml">Abc_Orderexport_Adminhtml</Abc_Orderexport>
</modules>
</args>
</adminhtml>
</routers>
</admin>
- 在你的控制器中,同样,你必须尊重 CamelCase,即 class 名称是
Abc_Orderexport_Adminhtml_Index2Controller
所有这些都是假设您的文件夹结构是:
app/
code/
local/
Abc/
Orderexport/
controllers/
Adminhtml/
Index2Controller.php
etc/
config.xml
adminhtml.xml
,确切地说,upper/lower 大小写很重要
能否请您尝试以下代码并确保您的模块 class 名称和文件夹结构必须在标准 magento 中
扩展结构。 config.xml
<admin>
<routers>
<orderexport>
<use>admin</use>
<args>
<modules>
<orderexport>Abc_Orderexport_Index2</orderexport>
<frontName>orderexport</frontName>
</modules>
</args>
<orderexport>
</routers>
<layout>
<updates>
<orderexport>
<file>orderexport.xml</file>
</orderexport>
</updates>
</layout>
</admin>
我已经在我的模块中设置了一个控制器,以便将订单导出选项卡添加到我的安装中:
在config.xml中:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<orderexport>abc_Orderexport_index2</orderexport>
</modules>
</args>
</adminhtml>
</routers>
<layout>
<updates>
<orderexport>
<file>orderexport.xml</file>
</orderexport>
</updates>
</layout>
</admin>
在adminhtml.xml中:
<?xml version="1.0"?>
<config>
<menu>
<sales>
<children>
<orderexport>
<title>Order Export</title>
<sort_order>20</sort_order>
<action>adminhtml/index2</action>
</orderexport>
</children>
</sales>
</menu>
<acl>
<resources>
<admin>
<children>
<sales>
<children>
<orderexport>
<title>Order Export</title>
<sort_order>20</sort_order>
</orderexport>
</children>
</sales>
</children>
</admin>
</resources>
</acl>
</config>
并在 controllers/Adminhtml/Index2Controller.php 文件中
class abc_Orderexport_Adminhtml_Index2Controller extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
然而,完成所有这些操作后,每当我单击按钮 "Order Export" 时,它都会将我重定向到 404 页面。这意味着 Magento 找不到控制器,但不知道为什么。
当我将控制器从 index2 重命名为 index(Index2Controller.php 到 IndexController.php)时,我没有被重定向到 404 页面,但是管理面板的仪表板只是重新加载。
我真的不知道我的错误在哪里,我很高兴能得到任何正确方向的提示。
这是您必须解决的问题:
in
config.xml
:你不得不说你的模块应该在 adminhtml 区域中使用,你必须尊重 CamelCase,它应该是这样的:<admin> <routers> <adminhtml> <args> <modules> <Abc_Orderexport after="Mage_Adminhtml">Abc_Orderexport_Adminhtml</Abc_Orderexport> </modules> </args> </adminhtml> </routers> </admin>
- 在你的控制器中,同样,你必须尊重 CamelCase,即 class 名称是
Abc_Orderexport_Adminhtml_Index2Controller
所有这些都是假设您的文件夹结构是:
app/ code/ local/ Abc/ Orderexport/ controllers/ Adminhtml/ Index2Controller.php etc/ config.xml adminhtml.xml,确切地说,upper/lower 大小写很重要
能否请您尝试以下代码并确保您的模块 class 名称和文件夹结构必须在标准 magento 中 扩展结构。 config.xml
<admin>
<routers>
<orderexport>
<use>admin</use>
<args>
<modules>
<orderexport>Abc_Orderexport_Index2</orderexport>
<frontName>orderexport</frontName>
</modules>
</args>
<orderexport>
</routers>
<layout>
<updates>
<orderexport>
<file>orderexport.xml</file>
</orderexport>
</updates>
</layout>
</admin>