获得2个模块在magento中使用相同的名字

时间:2013-03-04 22:56:21

标签: php magento routes

我正在创建一个模块,允许客户在未到达处理阶段的情况下编辑订单,到目前为止一切正常,但在订单历史记录页面上我有这3个链接

View Order        | http://www.site.com/Current-Build/sales/order/view/order_id/[ID]/
Reorder           | http://www.site.com/Current-Build/sales/order/reorder/order_id/[ID]/
Edit Order (mine) | http://www.site.com/Current-Build/mymodulefrontname/order/edit/order_id/[ID]/

让事情看起来很整洁我尝试通过将我的模块的<frontName>更改为config.xml中的sales并将mymodulefrontname更改为sales来更改我的链接以匹配之前的2虽然这对我的链接问题有用,但现在前2个链接现在转到404页

有没有办法让我的模块与Mage_Sales具有相同的前缀,而不会引起冲突

1 个答案:

答案 0 :(得分:5)

Magento introduced the ability to add directories under existing frontnames in Magento 1.3 [link]

您的案例中的适当语法是:

<frontend>
    <routers>
        <sales>
            <args>
                <modules>
                    <arbitrary after="Mage_Sales">Your_Module_Sales</arbitrary>
                    <!-- points to Your/Module/controllers/Sales/ -->
                </modules>
            </args>
        </sales>
    </routers>
</frontend>

使用editAction()方法在匹配目录中创建 OrderController.php 类,您就可以开展业务了。

作为样式,上面的配置将开始匹配模块的 controllers 目录下 Sales 子目录中的路由。我更喜欢将这些类型的控制器分开;您可以选择不同的子目录,也可以选择不使用一个子目录。