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,还是有更简单的方法来实现这一目标?我认为必须有一个简单的方法,但我无法弄明白.
谢谢 :)
您确实打算通过$ 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设置为正面名称.
你想到的是让你自己的正面名称正常工作的正确解决方案,只要你不关心使用管理员名字,它就能正常工作.:)