找不到 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 页面,但是管理面板的仪表板只是重新加载。

我真的不知道我的错误在哪里,我很高兴能得到任何正确方向的提示。

这是您必须解决的问题:

  1. 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>
    
  2. 在你的控制器中,同样,你必须尊重 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>