【问题标题】:Unable to call magento admin controller无法调用 magento 管理员控制器
【发布时间】:2015-06-01 20:32:19
【问题描述】:

我创建了一个自定义模块,它在目录添加了两个菜单。我还为其中一个 menu 创建了一个 controller,但该控制器从未被调用,而是被重定向到管理仪表板页面。

我的问题是一些与这个问题有关的问题Magento admin routing isn't working

我已经尝试了答案中提到的建议,但没有一个对我有用。

每当我调用 url http://localhost/compare/index.php/ecomm/index/key/bb9f436ee373421b170aa862a1cbb305/

我被重定向到 http://localhost/compare/index.php/admin/dashboard/index/key/bb9f436ee373421b170aa862a1cbb305/ 并且永远不会打印 hello world。

我正在使用 ma​​gento 1.9 并且已禁用所有缓存。

我的模块名称是Super_Awesome,下面是目录结构

超级
|
|-棒极了
  |-etc (adminhtml.xml, config.xml)
  |-控制器 (ManageEcomm.php)
  |-Helper (Data.php)

app/etc/modules/Super_Awesome.xml中的配置文件如下

<?xml version="1.0"?>
<config>
    <modules>
        <Super_Awesome>
            <active>true</active>
            <codePool>local</codePool>
        </Super_Awesome>
    </modules>
</config>

app/code/local/Super/Awesome/etc/config.xml中的配置文件是

<?xml version="1.0"?>
<config>
    <modules>
        <Super_Awesome>
            <version>0.1.0</version>
        </Super_Awesome>
    </modules> 

    <admin>
        <routers>
            <ecomm>
                <use>admin</use>
                <args>
                    <module>Super_Awesome</module>
                    <frontName>ecomm</frontName>
                </args>
            </ecomm>
        </routers>
    </admin>
    <adminhtml>
        <!-- The <acl> section is for access control. Here we define the pieces where access can be controlled within a role. -->
        <acl>
            <resources>
                <admin>
                    <children>
                        <catalog>
                            <!--<title>Awesome Menu Item</title>-->
                            <children>
                                <example translate="title" module="awesome">
                                    <title>Manage Ecommerce</title>
                                </example>
                                <example1 translate="title" module="awesome">
                                    <title>Manage Ecommerce Pages</title>
                                </example1>
                            </children>
                        </catalog>
                    </children>
                </admin>
            </resources>
        </acl>

    </adminhtml>

    <global>
        <helpers>
            <awesome>
                <class>Super_Awesome_Helper</class>
            </awesome>
        </helpers>
    </global>

</config>

控制器 app/code/local/Super/Awesome/controllers/IndexController.php

<?php
class Super_Awesome_IndexController extends Mage_adminhtml_Controller_Action
{
    public function indexAction()
    { 
        echo "hello world";
        exit();
    }
}

最后是app/code/local/Super/Awesome/etc/中的adminhtml.xml文件

<?xml version="1.0"?>
<config>
    <menu>
        <catalog translate="title" module="awesome">
            <!--<title>Awesome</title>
            <sort_order>15</sort_order>-->
            <children>
                <example translate="title" module="awesome">
                    <title>Manage Ecommerce</title>
                    <sort_order>1</sort_order>
                    <action>adminhtml/ecomm</action>
                </example>
                <example1 translate="title" module="awesome">
                    <title>Manage Ecommerce Pages</title>
                    <sort_order>2</sort_order>
                    <action>adminhtml/example/index</action>
                </example1>
            </children>
        </catalog>
    </menu>
</config>

【问题讨论】:

    标签: php magento e-commerce magento-1.9


    【解决方案1】:

    我认为你错过了add your new module as a router for adminhtmletc/config.xml 中的部分。应该是这样的:

    当 Magento 尝试为管理 URL 查找控制器文件时,它还将检查在此 &lt;modules/&gt; 标记内配置的任何模块。

    <config>
        <admin>
            <routers>
                <adminhtml>
                    <args>
                        <modules>
                            <Super_Awesome after="Mage_Adminhtml">Super_Awesome</Super_Awesome>
                        </modules>
                    </args>
                </adminhtml>
            </routers>
        </admin>
    </config>
    

    【讨论】:

    • 感谢您的快速回复。如果我添加这个 xml 块,我对应的 url 是什么?我有两个xml。 localhost/compare/index.php/admin/super/awesome/index/key/… 显示 404,而之前的 url 将我重定向到仪表板页面。
    • @Searock - 在新路线开始工作之前,您可能需要退出管理员并重新登录。这通常是管理模板中显示的 404 的含义。
    • 它不起作用,我已经添加了你所说的块加上&lt;admin&gt; &lt;routers&gt; &lt;ecomm&gt; &lt;use&gt;admin&lt;/use&gt; &lt;args&gt; &lt;module&gt;Super_Awesome&lt;/module&gt; &lt;frontName&gt;ecomm&lt;/frontName&gt; &lt;/args&gt; &lt;/ecomm&gt; &lt;/routers&gt; &lt;/admin&gt;
    • 我参考了 Alan Storm 的教程并且他的代码有效。仍然不确定我的代码有什么问题。顺便说一句,你们都属于同一个国家,你是艾伦吗?
    • @Searock - 哈,不,我不是Alan Storm。哪个部分不工作,现在发生了什么?
    【解决方案2】:

    我终于发现自己创建一个模块不好。如果您犯了错误,您最终可能会花费宝贵的时间来寻找出错的地方。

    最好从Ultimate Module Creator 安装模块创建器扩展或使用Silk 提供的在线工具

    【讨论】:

    • 是的,有许多细节必须正确,因此为 Magento 创建扩展时容易出错。很高兴您找到了可以帮助您解决问题的工具。您应该扩展您的答案以解释问题所在,然后接受您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多