经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
thinkphp3.2模块名如何不区分大小写?
来源:cnblogs  作者:子钦加油  时间:2018/12/11 9:29:13  对本文有异议

thinkphp3.2中已配置:'URL_CASE_INSENSITIVE' => true,对于控制器及操作名大小写都可以,但仍对于模块名的大小写就运行机制出错,
比如:http://www.xxxx.com/Home 这是正常的,但换成http://www.xxxx.com/home就出错,

解决方案如下

修改 View.class.php 文件让大小写共存
替换 parseTemplate 

  1. public function parseTemplate($template='') {
  2.         if(is_file($template)) {
  3.             return $template;
  4.         }
  5.         $depr       =   C('TMPL_FILE_DEPR');
  6.         $template   =   str_replace(':', $depr, $template);
  7.         // 获取当前模块
  8.         $module   =  MODULE_NAME;
  9.         if(strpos($template,'@')){ // 跨模块调用模版文件
  10.             list($module,$template)  =   explode('@',$template);
  11.         }
  12.         // 获取当前主题的模版路径
  13.         defined('THEME_PATH') or    define('THEME_PATH', $this->getThemePath($module));
  14.         // 分析模板文件规则
  15.         if('' == $template) {
  16.             // 如果模板文件名为空 按照默认规则定位
  17.             $template = CONTROLLER_NAME . $depr . ACTION_NAME;
  18.         }elseif(false === strpos($template, $depr)){
  19.             $template = CONTROLLER_NAME . $depr . $template;
  20.         }
  21.         $file   =   THEME_PATH.$template.C('TMPL_TEMPLATE_SUFFIX');
  22.         if(C('TMPL_LOAD_DEFAULTTHEME') && THEME_NAME != C('DEFAULT_THEME') && !is_file($file)){
  23.             // 找不到当前主题模板的时候定位默认主题中的模板
  24.             $file   =   dirname(THEME_PATH).'/'.C('DEFAULT_THEME').'/'.$template.C('TMPL_TEMPLATE_SUFFIX');
  25.         }
  26.         //URl 大小写转换
  27.         if(!is_file($file)){
  28.             $file = $this->Get_Url($file);
  29.             if(!is_file($file)){
  30.                  $file = $this->Get_Url($file,1); 
  31.             }
  32.         }
  33.         return $file;
  34.     }
  35.     private function Get_Url($f,$x=''){
  36.         $a = explode('/',$f);
  37.         $b = count($a)-1;
  38.         foreach ($a as $k => $v){
  39.             if($k == $b){
  40.                 if(empty($x)){
  41.                     $c .= ucfirst($v).'/';
  42.                 }else{
  43.                     $c .= strtolower($v).'/';
  44.                 }
  45.             }else{
  46.                 $c .= $v.'/';
  47.             }
  48.         }
  49.         return rtrim($c,'/');
  50.     }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号