【问题标题】:magento controller not found找不到magento控制器
【发布时间】:2016-02-15 00:58:11
【问题描述】:

我已经在我的模块中设置了一个控制器来为我的安装添加一个订单导出选项卡:

在 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>

在控制器/Adminhtml/Index2Controller.php 文件中

class abc_Orderexport_Adminhtml_Index2Controller extends Mage_Adminhtml_Controller_Action
{

    public function indexAction()
    {
         $this->loadLayout();
         $this->renderLayout();
    }

}

但是,完成所有这些后,每当我单击“订单导出”按钮时,它都会将我重定向到 404 页面。这意味着 Magento 找不到控制器,但不知道为什么。

当我将控制器从 index2 重命名为 index(Index2Controller.php 到 IndexController.php)时,我没有被重定向到 404 页面,但是管理面板的仪表板只是重新加载。

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

【问题讨论】:

    标签: magento controller adminhtml


    【解决方案1】:

    这是你必须解决的问题:

    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,即类名是Abc_Orderexport_Adminhtml_Index2Controller

    所有这些都假设您的文件夹结构是:

    应用程序/ 代码/ 当地的/ ABC/ 订购出口/ 控制器/ 管理员html/ Index2Controller.php ETC/ 配置文件 管理html.xml ,确切地说,大写/小写很重要

    【讨论】:

    • 谢谢你这个作品,但是我得到的页面是空的。如您所见,我对模块进行了布局更新,当我使用 public function indexAction() { $this->loadLayout(); 时不应该调用 .xml 和 .phtml 文件$this->renderLayout(); } 在控制器中?这是我的 xml 文件:
    • @Tom 您的问题是关于找不到控制器的问题,您现在说我的答案已经解决:如果您支持并将其标记为正确,我将不胜感激。这样做会鼓励我和其他人再次帮助您解决下一个问题。
    【解决方案2】:

    您能否尝试以下代码并确保您的模块类名和文件夹结构必须是标准的 magento 扩展结构。配置.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>

    【讨论】:

      猜你喜欢
      • 2015-09-13
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多