如何在Magento中使用getUrl()来引用另一个模块?

时间:2011-09-05 08:26:55

标签: magento geturl

我在Magento adminpanel中的模块的网址类似于http://example.com/index.php/mymodule/ ...并包含订单的自定义网格。我想在点击网格行时将用户重定向到标准的“订单视图”页面。

public function getRowUrl($row)
{
    if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
        return $this->getUrl('sales_order/view', array('order_id' => $row->getId()));
    }
    return false;
}

但此网址指向http://example.com/index.php/sales_order/view/ ...而不是http://example.com/index.php/ 管理员 / sales_order / view / ...有任何建议吗?

UPD。 config.xml中

<admin>
    <routers>
        <mymodule>
            <use>admin</use>
            <args>
                <module>Foo_Mymodule</module>
                <frontName>mymodule</frontName>
            </args>
        </mymodule>
    </routers>
</admin>

1 个答案:

答案 0 :(得分:7)

很简单,您需要将sales_order/view替换为*/sales_order/view*表示使用管理员adminhtml中的当前路由器。

修改
要更详细地解释,请将其放入您的配置中,

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

现在,值*/mymodule/index将生成一个网址http://example.com/index.php/admin/mymodule/index,后者将加载文件Foo/Mymodule/controllers/Adminhtml/MymoduleController.php并尝试查找方法Foo_Mymodule_Adminhtml_MymoduleController::indexAction()。如果该方法存在则运行,否则管理路由器接管并显示404或重定向到仪表板。