如何在Magento admin中获取页面/部分的URL

时间:2011-07-29 18:54:15

标签: magento magento-1.5

我似乎无法在这个问题上找到明确的答案。如何在管理员后端获取页面的URL?

例如,假设我有一个使用名称为 mymodule 的控制器的模块。如果我打电话:

$this->getUrl('mymodule/controller/action')

我明白了:

http://mydomain.com/index.php/mymodule/controller/action

这不起作用,因为它没有包含管理员名字。

我发现this thread提到了这个:

Mage::helper("adminhtml")->getUrl();

然而,这并没有将管理员的正面名称附加到URL ...那么通过adminhtml帮助器传递它的意义何在?该主题还说你可以使用它来获取管理员名字:

Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');

所以我应该使用这两种方法构建正确的URL,还是有更简单的方法来实现这一目标?我认为必须有一个简单的方法,但我无法弄明白。

谢谢:)

2 个答案:

答案 0 :(得分:5)

您确实打算通过$ this-> getUrl(' mymodule / controller / action')获取网址。然而,混淆导致对路由系统的误解。 admin标记指定使用管理路由器,mymodule指定URL中使用的正面名称。基本上你是在创建自己的正面名称。要使用管理员名称,您需要使用控制器重写才能完成它。如下所示:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <mymodule after="Mage_Adminhtml">Your_Mymodule</mymodule>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

这样做是将路由系统配置为查看控制器以获取适当的操作,但前提是它没有在Mage_Adminhtml控制器上找到它。

请注意,使用此重写时,您需要使用&#39; adminhtml&#39;而不是mymodule&#39;在调用getURL时,因为您的网址将由adminhtml设置为正面名称。

你想到的是让你自己的正式名称正常工作的正确解决方案,并且只要你不关心使用管理员名称,它就会正常工作。 :)

答案 1 :(得分:1)

我想我想出了这个,但如果我弄错了,请发表评论或添加你自己的答案。我的第一个问题是我的config.xml配置不正确。我在<frontend>元素下有<admin>而不是<routers>。我还有<use>standard</use>而不是<use>admin</use>。复制粘贴错误;)

但是,这似乎仍然没有改变返回的URL,但这似乎并不重要。它现在正确地命中我的控制器,即使我重定向到的URL不包含管理员前线名称。所以我对此感到有些困惑,但无论如何,它都在发挥作用。