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

发布于 2024-12-02 17:22:00 字数 1161 浏览 2 评论 0原文

我在 Magento 管理面板中的模块的 URL 类似于 http://example.com/index.php/mymodule/< /a>... 并包含带有订单的自定义网格。当用户单击网格行时,我想将用户重定向到标准“订单视图”页面。

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;
}

但此 URL 指向 http://example.com/index.php/sales_order/view/< /a>...而不是 http://example.com/index.php/admin/sales_order/view/... 有什么建议吗?

UPD。 config.xml

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

My module in Magento adminpanel has URL like as http://example.com/index.php/mymodule/... and contains custom grid with the orders. I want to redirect user to the standard "Order view" page when he clicks on a grid row.

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;
}

But this URL points to http://example.com/index.php/sales_order/view/... instead of http://example.com/index.php/admin/sales_order/view/... Any suggestion?

UPD. config.xml:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

标点 2024-12-09 17:22:00

很简单,您需要将 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 将生成一个 URL http://example.com/index.php/admin/mymodule/index 依次加载文件 Foo/Mymodule/controllers/Adminhtml/MymoduleController.php 并尝试查找方法 Foo_Mymodule_Adminhtml_MymoduleController::indexAction()。如果该方法存在,则运行该方法,否则管理路由器接管并显示 404 或重定向到仪表板。

Quite simply you need to replace sales_order/view with */sales_order/view. The * means use the current router which in the admin is adminhtml.

Edit
To explain in more detail put this in your config,

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

Now the value */mymodule/index will generate an URL http://example.com/index.php/admin/mymodule/index which in turn will load the file Foo/Mymodule/controllers/Adminhtml/MymoduleController.php and try to find the method Foo_Mymodule_Adminhtml_MymoduleController::indexAction(). If the method exists it is run, otherwise the admin router takes over and shows a 404 or redirects to the dashboard.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文