2012-06-11 17 views
1

我試圖修改兩個相似的自定義模塊以將它們組合到1個自定義模塊中。但是,這兩個模塊都使用confix.xml中的<routers>標記。我搜索並搜索了一種方法來做到這一點,但沒有運氣。Magento - 您可以在自定義模塊的confix.xml中使用多個<routers>

例如:

自定義模塊1

<admin> 
    <routers> 
     <Namespace_Module1> 
      <use>admin</use> 
      <args> 
       <module>Namespace_Module1</module> 
       <frontName>frontname</frontName> 
      </args> 
     </Namespace_Module1> 
    </routers> 
</admin> 

自定義模塊2

<admin> 
    <routers> 
     <Namespace_Module1> 
      <use>admin</use> 
      <args> 
       <module>Namespace_Module2</module> 
       <frontName>namefront</frontName> 
      </args> 
     </Namespace_Module2> 
    </routers> 
</admin> 

我認爲這是能夠結合阻止我的唯一兩個類似的模塊在一起這可以做到嗎?如果是這樣,怎麼樣(一個例子)?

回答

4

我不完全確定你想達到什麼。你是否在尋找兩個不同的路由器,即兩個不同的正面名稱,從單個模塊內定義?如果是這樣,請繼續閱讀 - 如果沒有,請您澄清一下事情。

首先,您在自定義模塊2中提供的xml中有一個標籤不匹配。您打開<Namespace_Module1>並以</Namespace_Module2>結束 - 因此,此代碼不起作用。

其次,要定義路由器,您必須使用<routers>標記 - 所以這沒有問題。直接在它下面的節點必須是唯一的。

因此,假設我已經正確地讀出你的問題,你想合併這兩個路由器節點,但仍然有兩個不同的前名,以下將工作:

<admin> 
    <routers> 
     <namespace_module1> 
      <use>admin</use> 
      <args> 
       <module>Namespace_Module1</module> 
       <frontName>frontname</frontName> 
      </args> 
     </namespace_module1> 
     <namespace_module2> 
      <use>admin</use> 
      <args> 
       <module>Namespace_Module2</module> 
       <frontName>namefront</frontName> 
      </args> 
     </namespace_module2> 
    </routers> 
</admin> 

不過,如果有一個特別的原因這些必須是單獨的路由器,那麼我會提供以下更好的選擇:使用單個路由器,但使用多個控制器。所以,你的XML也只是:

<admin> 
    <routers> 
     <namespace_module> 
      <use>admin</use> 
      <args> 
       <module>Namespace_Module</module> 
       <frontName>frontname</frontName> 
      </args> 
     </namespace_module> 
    </routers> 
</admin> 

創建你的模塊控制器目錄中的兩個控制器,說Module1Controller.phpModule2Controller.php

然後,您將可以通過/frontname/module1//frontname/module2訪問它們(索引操作)。

這感覺就像一個更清潔的解決方案。

+0

謝謝你幫助我解決這個問題,你可以使用1個路由器來完成我想要完成的任務。我比你的「更清潔」解決方案稍微有點不同,但非常符合它的相同方面。我也使用了一個控制器,但採取了不同的行動一切都很好(只需稍微改寫一下代碼)。謝謝! – Geoff

0

據我所知,你試圖通過一個frontName匹配兩個模塊的控制器。

通過在第二個模塊中使用'模塊'節點,這是完全可能的。讓您的配置在第一個模塊,而是使用了第二個:

<admin> 
    <routers> 
     <Namespace_Module1> 
      <args> 
       <modules> 
        <Namespace_Module2>Namespace_Module2</Namespace_Module2> 
       </modules> 
      </args> 
     </Namespace_Module1> 
    </routers> 
</admin> 

無需指定「使用」或「frontName」,這些XML文件反正合並。 Magento將首先嚐試在第一個模塊中找到匹配的控制器,然後在第二個模塊中找到匹配的控制器。

+0

謝謝你的回答,但我同Drew Hunter的解決方案一起(上圖)。 – Geoff

相關問題