上一章引入了一個自定義的概念叫模塊的別名(alias),這章沿用這個概念來處理routerName的加載。
<modules>
<Mage_Wishlist>
<version>1.6.0.0</version>
<alias>wishlist</alias>
</Mage_Wishlist>
</modules>
<routers>
<wishlist>
<use>standard</use>
<args>
<module>Mage_Wishlist</module>
<frontName>wishlist</frontName>
</args>
</wishlist>
</routers>
很自然的發現<frontName>的值wishlist與該模塊其它別名都是一致的(不一致的情況下面會講到),那麼這次改造的目的就是,直接用通用的別名來取代這一整段路由配置。
因爲路由這個東西很明顯存在需要自定義的需求(即前端網頁url自定義的需求),所以類似於對佈局xml文件的處理,這裏的改造方式保留了上面這種人爲指定路由的配置方式,在沒有人爲指定路由時,採用模塊的別名作爲路由名。(其實“佈局xml文件”是否保留自定義配置我覺得可以商榷,但路由的自定義是必須保留的)
需要修改的文件是Mage_Core_Controller_Varien_Router_Standard,詳見
主要修改的方法是:public function collectRoutes($configArea, $useRouterName)
如上文所言,經過這次修改之後,用戶依然可以人爲指定路由名,不需要指定的(跟別名一致的),可以刪除類似如下的xml片段
<routers>
<wishlist>
<use>standard</use>
<args>
<module>Mage_Wishlist</module>
<frontName>wishlist</frontName>
</args>
</wishlist>
</routers>
從實際工作經驗來說,有人爲指定跟別名不一致的路由名的模塊是個別少數,大部分模塊都可以省下這一段xml配置了。
好了,請期待下一章!!!