thinkphp3.2中已配置:'URL_CASE_INSENSITIVE' => true,对于控制器及操作名大小写都可以,但仍对于模块名的大小写就运行机制出错,
比如:http://www.xxxx.com/Home 这是正常的,但换成http://www.xxxx.com/home就出错,
解决方案如下
修改 View.class.php 文件让大小写共存
替换 parseTemplate
publicfunctionparseTemplate($template=''){
if(is_file($template)){
return$template;
}
$depr=C('TMPL_FILE_DEPR');
$template=str_replace(':',$depr,$template);
//获取当前模块
$module=MODULE_NAME;
if(strpos($template,'@')){//跨模块调用模版文件
list($module,$template)=explode('@',$template);
}
//获取当前主题的模版路径
defined('THEME_PATH')ordefine('THEME_PATH',$this->getThemePath($module));
//分析模板文件规则
if(''==$template){
//如果模板文件名为空按照默认规则定位
$template=CONTROLLER_NAME.$depr.ACTION_NAME;
}elseif(false===strpos($template,$depr)){
$template=CONTROLLER_NAME.$depr.$template;
}
$file=THEME_PATH.$template.C('TMPL_TEMPLATE_SUFFIX');
if(C('TMPL_LOAD_DEFAULTTHEME')&&THEME_NAME!=C('DEFAULT_THEME')&&!is_file($file)){
//找不到当前主题模板的时候定位默认主题中的模板
$file=dirname(THEME_PATH).'/'.C('DEFAULT_THEME').'/'.$template.C('TMPL_TEMPLATE_SUFFIX');
}
//URl大小写转换
if(!is_file($file)){
$file=$this->Get_Url($file);
if(!is_file($file)){
$file=$this->Get_Url($file,1);
}
}
return$file;
}
privatefunctionGet_Url($f,$x=''){
$a=explode('/',$f);
$b=count($a)-1;
foreach($aas$k=>$v){
if($k==$b){
if(empty($x)){
$c.=ucfirst($v).'/';
}else{
$c.=strtolower($v).'/';
}
}else{
$c.=$v.'/';
}
}
returnrtrim($c,'/');
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。