“约定优于配置”与Magento改造尝试三之routerName加载

简介:

上一章引入了一个自定义的概念叫模块的别名(alias),这章沿用这个概念来处理routerName的加载。

    <modules>
        <Mage_Wishlist>
            <version>1.6.0.0</version>
            <alias>wishlist</alias>
        </Mage_Wishlist>
    </modules>


常见的路由(router)定义如下


        <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,详见

https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Controller/Varien/Router/Standard.php

主要修改的方法是:public function collectRoutes($configArea, $useRouterName)


如上文所言,经过这次修改之后,用户依然可以人为指定路由名,不需要指定的(跟别名一致的),可以删除类似如下的xml片段

        <routers>
            <wishlist>
                <use>standard</use>
                <args>
                    <module>Mage_Wishlist</module>
                    <frontName>wishlist</frontName>
                </args>
            </wishlist>
        </routers>

从实际工作经验来说,有人为指定跟别名不一致的路由名的模块是个别少数,大部分模块都可以省下这一段xml配置了。


好了,请期待下一章!!!

目录
相关文章
|
域名解析 Kubernetes Java
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
2592 1
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
|
8月前
|
Web App开发 缓存 JSON
可以用到项目的优化网站加载速度方案
可以用到项目的优化网站加载速度方案
56 0
|
6月前
|
设计模式 前端开发 Java
如何实现自定义MVC框架(最终版本)
如何实现自定义MVC框架(最终版本)
25 0
|
11月前
|
数据采集 算法 数据可视化
MMdetection框架速成系列 第03部分:简述整体构建细节与模块+训练测试模块流程剖析+深入解析代码模块与核心实现
按照抽象到具体方式,从多个层次进行训练和测试流程深入解析,从最抽象层讲起,到最后核心代码实现,希望帮助大家更容易理解 MMDetection 开源框架整体构建细节
506 0
|
SQL 安全 网络安全
Yii2.0网站如何才能让安全最大化?具体步骤是怎样的?底层原理是什么?
Yii2.0网站如何才能让安全最大化?具体步骤是怎样的?底层原理是什么?
|
前端开发 JavaScript CDN
webpack优化篇(四十五):进一步分包:预编译资源模块
webpack优化篇(四十五):进一步分包:预编译资源模块
154 0
webpack优化篇(四十五):进一步分包:预编译资源模块
|
PHP 开发工具 数据库
Yii2 修改框架入口增加配置适应开发生产环境
Yii2 修改框架入口增加配置适应开发生产环境
90 0
Yii2 修改框架入口增加配置适应开发生产环境
|
数据库
插件配置设计
插件配置设计
77 0
|
API 开发工具 Android开发
Gradle 系列(5)一键检索未适配 64 位架构的 so 文件
Gradle 系列(5)一键检索未适配 64 位架构的 so 文件
330 0
Gradle 系列(5)一键检索未适配 64 位架构的 so 文件
|
缓存 前端开发 开发工具
前端多语资源打包及加载的一个可行性方案
在一个比较大的项目里面(有国际化需求的),国际化的支持是一个必不可少的; 那如何落地就得具体问题具体分析了,这里说说我遇到过并落地的一个改造方案; 说说项目背景,是一个迭代多年的产研类项目(整个系统是围绕react生态去研发的),历史包袱挺多; 多种第三方库并存,也有iframe的场景以及自研的插件机制系统(现代沙盒隔离那一套); 方案仅供参考,哈!
150 0