最新消息: 新版网站上线了!!!

URL_CASE_INSENSITIVE的__URL__生成问题

1、环境说明

ThinkPHP版本3.1.3

配置打开URL_CASE_INSENSITIVE=>true,即URL忽略大小写

2、产生问题

如果项目模块名称存在这种“ABC”结构的类型,如“MyHome”,那么根据

/ThinkPHP/lib/core/Dispatcher.class.php

第228行的注释,项目模块可以通过“my_home”或“MyHome”访问到,但是在模板中如果使用“__URL__”这个参数的话

模块名称会被系统生成为“myhome”的方式

这样通过使用“__URL__”来访问模块时就报无法找到模块的错误

同样根据上面“Dispatcher.class.php”文件的注释,我们会知道ThinkPHP会将模块名称首字母大写(ucfirst)

这样链接访问地址实际是“Myhome”,但是项目中并没有Myhome这个模块

3、处理办法

将“__URL__”的生成方式改为多个单词间以“_”划分,即“MyHome”生成为“my_home”

/ThinkPHP/lib/core/Dispatcher.class.php

1
2
3
4
5
if(defined('GROUP_NAME')) {
        define('__URL__',!empty($domainModule)?__GROUP__.$depr : __GROUP__.$depr.( C('URL_CASE_INSENSITIVE') ? strtolower($moduleName) : $moduleName ) );
}else{
        define('__URL__',!empty($domainModule)?__APP__.'/' : __APP__.'/'.( C('URL_CASE_INSENSITIVE') ? strtolower($moduleName) : $moduleName) );
}

第183行至188行的代码,修改为:

1
2
3
4
5
6
7
8
-->

转载请注明:谷谷点程序 » URL_CASE_INSENSITIVE的__URL__生成问题