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

Bri*_*VPS 3 magento magento-1.5

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

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

$this->getUrl('mymodule/controller/action')
Run Code Online (Sandbox Code Playgroud)

我明白了:

http://mydomain.com/index.php/mymodule/controller/action
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它没有包含管理员前缀名称.

我发现这个帖子提到了这个:

Mage::helper("adminhtml")->getUrl();
Run Code Online (Sandbox Code Playgroud)

但是,这并没有将管理员名称附加到URL ...那么通过adminhtml帮助程序传递它的重点是什么?该线程还说你可以用它来获取管理员的名字:

Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');
Run Code Online (Sandbox Code Playgroud)

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

谢谢 :)

dav*_*ger 5

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

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <mymodule after="Mage_Adminhtml">Your_Mymodule</mymodule>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
Run Code Online (Sandbox Code Playgroud)

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

请注意,在使用此重写时,您需要在调用getURL时使用"adminhtml"而不是"mymodule",因为您的URL将由adminhtml设置为正面名称.

你想到的是让你自己的正面名称正常工作的正确解决方案,只要你不关心使用管理员名字,它就能正常工作.:)