记录 onethink 模板找不到的问题

来源:互联网 发布:stc15w204s数据手册 编辑:程序博客网 时间:2024/05/18 00:16

用onethink 做开发,在本地环境下都是OK 的,然后部署到线上的时候,访问有些路径的时候出现模板不存在的问题。

一开始以为是thinkphp 中 url 大小写的问题。但是,改了 debug.php 和 config.php 两个配置文件都没有起作用。

然后,根据错误的提示,到框架的代码里面找错误的原因,thinkphp/view.class.php  文件跟踪到 dispatch.class.php 文件,

在底层解析模板文件的时候 有这样一个 变量  ACTION_NAME

最后找到这个函数,发现在返回的时候,把模板名转成小写了。然后把转换小写的代码删除了。

    /**
     * 获得实际的操作名称
     * @access private
     * @return string
     */
    static private function getAction($var) {
        $action   = !empty($_POST[$var]) ?
            $_POST[$var] :
            (!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_ACTION'));
        unset($_POST[$var],$_GET[$var]);
        if($maps = C('URL_ACTION_MAP')) {
            if(isset($maps[strtolower(CONTROLLER_NAME)])) {
                $maps =   $maps[strtolower(CONTROLLER_NAME)];
                if(isset($maps[strtolower($action)])) {
                    // 记录当前别名
                    define('ACTION_ALIAS',strtolower($action));
                    // 获取实际的操作名
                    if(is_array($maps[ACTION_ALIAS])){
                        parse_str($maps[ACTION_ALIAS][1],$vars);
                        $_GET   =   array_merge($_GET,$vars);
                        return $maps[ACTION_ALIAS][0];
                    }else{
                        return $maps[ACTION_ALIAS];
                    }
                    
                }elseif(array_search(strtolower($action),$maps)){
                    // 禁止访问原始操作
                    return   '';
                }
            }
        }        
        //return strip_tags(strtolower($action));
        return strip_tags(($action));
    }

0 0
原创粉丝点击