Php Magento管理路由是';行不通

Php Magento管理路由是';行不通,php,magento,Php,Magento,我正在为Magento的管理区开发一个模块。我试着跟随艾伦·斯托姆的教程,但似乎无法让我的控制器做任何事情。我想这可能与路线有关,但我不确定。它显示了带有404错误的前端模板 (注意:我在这里包含了所有相关代码。实际问题在最下面。) 该模块名为Mynamespace\u provider,位于app/code/local/Mynamespace/provider/中 我的etc/config.xml如下所示: <?xml version="1.0"?> <config>

我正在为Magento的管理区开发一个模块。我试着跟随艾伦·斯托姆的教程,但似乎无法让我的控制器做任何事情。我想这可能与路线有关,但我不确定。它显示了带有404错误的前端模板

(注意:我在这里包含了所有相关代码。实际问题在最下面。)

该模块名为Mynamespace\u provider,位于app/code/local/Mynamespace/provider/中

我的etc/config.xml如下所示:

<?xml version="1.0"?>
<config>
    <modules>
        <Mynamespace_Donor>
            <version>0.1.0</version>
        </Mynamespace_Donor>
    </modules>
    <global>
        <helpers>
            <donor>
                <class>Mynamespace_Donor_Helper</class>
            </donor>
        </helpers>
        <resources>
            <donor_setup>
                <setup>
                    <module>Mynamespace_Donor</module>
                </setup>
            </donor_setup>
        </resources>
    </global>

    <admin>
        <routers>
            <donor>
                <use>admin</use>
                <args>
                    <module>Mynamespace_Donor</module>
                    <frontname>donor</frontname>
                </args>
            </donor>
        </routers>
    </admin>

    <adminhtml>
        <menu>
            <donor translate="title" module="donor">
                <title>Donor</title>
                <sort_order>42</sort_order>
                <children>
                    <manage_donors module="donor">
                        <title>Manage Donors</title>
                        <action>donor/index/index</action>
                    </manage_donors>
                </children>
            </donor>
        </menu>
    </adminhtml>
</config>
<?php
class Mynamespace_Donor_IndexController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction()
    {
        $this->loadLayout();

        //create a text block with the name of "example-block"
        $block = $this->getLayout()
        ->createBlock('core/text', 'example-block')
        ->setText('<h1>This is a text block</h1>');

        $this->_addContent($block);

        $this->renderLayout();
    }
}
问题:我做错了什么?为什么我不能访问此控制器

最后,在Alan的示例代码中,URL以模块名开头,但我希望我的URL以
/admin/provider
开头,而不是
/provider
。我需要对此进行哪些更改


编辑1 最终目标是在管理区域中有一个新选项卡,用于管理系统中的捐赠者和相关数据。当你点击某个菜单项时,我想显示一个网格,并有子选项卡和类似的东西。我不希望覆盖adminhtml控制器-尽管我正在根据以下扩展它:

与标准的唯一区别 这里的控制员是我们的 延伸 Mage_Adminhtml_控制器_操作 而不是 法师、核心、控制器、变形金刚动作。 Mage_Adminhtml_控制器_操作 包含用于验证的重要代码 管理会话,以及几个 在管理中有用的方法 控制台上下文

因此,在这张图片中,单击第一个子菜单项应该调用我的控制器的索引操作,并显示一个网格或一些东西来管理捐赠者

<config>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <mynamespace_donor before="Mage_Adminhtml">Mynamespace_Donor</mynamespace_donor>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>


尝试替换:

<frontname>donor</frontname>
捐赠者
与:

<frontName>donor</frontName>
捐赠者

这将修复404错误。

关于致命错误;您在权限中有
module=“Mynamespace\u-Donor”
。如果你看Alan的教程,他有:

<tutorial_menu translate="title" module="adminhelloworld">
捐赠者
来自您自己的配置文件:

<helpers>
    <donor> <!-- <<< This is the alias "donor" -->
        <class>Mynamespace_Donor_Helper</class>
    </donor>
</helpers>

Mynamespace\u捐赠者\u帮助者

效果很好,谢谢!为什么最大的问题总是归结为一个角色P你知道我如何使URL以“/admin/provider”开头,而不仅仅是“/provider”吗?这个答案是正确的,但如果使用B00MER的答案则是多余的。@clockworkgeek-你是说我需要使用B00MER的解决方案来获取以“/admin”开头的URL吗?我尝试将
设置为
管理员/捐赠者
-这使得菜单URL指向我想要的(
/admin/捐赠者/索引
),但是404问题又回来了:-/我已经决定,在这一点上,“admin”前缀不值得这么麻烦。这让它工作起来,所以我接受这个。再次感谢@clockworkgeek和@B00MER的帮助!我很感激。谢谢,这为我解决了权限问题:请考虑使用来为您构建所有这些配置文件。它为您节省了大量的样板文件,而且(从内存中)甚至还有一个带有网格的管理页面模板。感谢您的提示,我下次一定会从这个开始:)或者如果我被其他东西卡住了……我想这会覆盖adminhtml控制器。这真的是我想做的吗?我想我只是想扩展它,以获得一些内置功能,但不干扰任何其他功能。@Colin-这并不是完全覆盖adminhtml,只是确保您的控制器先于其他控制器进行了尝试,如果URL与控制器的操作不匹配,则adminhtml将正常处理。如果您愿意,您可以使用它来覆盖现有的操作,但这是后面的课程…@clockworkgeek/B00MER-Gotcha,这很有意义。我能够通过B00MER的答案获得所需的URL,但管理区域中的其他每个选项卡最终都会被404。我的控制器名为IndexController,我的操作名为indexAction。我是否需要更改其中一个的名称以防止其覆盖这些名称?如果是这样,我应该给它们起什么名字?我需要移动任何文件吗?
<donor translate="title" module="donor">
<helpers>
    <donor> <!-- <<< This is the alias "donor" -->
        <class>Mynamespace_Donor_Helper</class>
    </donor>
</helpers>