关于操作名首字母大写的问题

浏览:2571 发布日期:2014/05/15 分类:求助交流 关键字: 控制器检查优化 默认控制器 默认操作 默认模块
今天在开启默认模块默认控制器默认操作后出现这样的问题    'DEFAULT_MODULE'     => 'Home', //默认模块
    'DEFAULT_CONTROLLER'    =>  'Index',//默认控制器
    'DEFAULT_ACTION'        =>  'getMember', // 默认操作名称
直接localhost访问没有问题
但是直接在浏览器中输入http://localhost/getMember.html 这时候问题就出现了

查看源代码时发现ThinkPHP\Library\Think\Dispatcher.class.php    /**
     * 获得实际的控制器名称
     * @access private
     * @return string
     */
    static private function getController($var) {
        $controller = (!empty($_GET[$var])? $_GET[$var]:C('DEFAULT_CONTROLLER'));
        unset($_GET[$var]);
        if($maps = C('URL_CONTROLLER_MAP')) {
            if(isset($maps[strtolower($controller)])) {
                // 记录当前别名
                define('CONTROLLER_ALIAS',strtolower($controller));
                // 获取实际的控制器名
                return   ucfirst($maps[CONTROLLER_ALIAS]);
            }elseif(array_search(strtolower($controller),$maps)){
                // 禁止访问原始控制器
                return   '';
            }
        }
        if(C('URL_CASE_INSENSITIVE')) {
            // URL地址不区分大小写
            // 智能识别方式 user_type 识别到 UserTypeController 控制器
            $controller = parse_name($controller,1);
        }
        return strip_tags(ucfirst($controller));
    }
这里却没有检测设定的默认控制器,请问这是怎么回事情。按照理解应该是设定了默认的模块、控制器、操作时,如果什么都不输入则显示默认的,当只有一项时,既然检查了控制器,就应该判断控制器是否存在,如果不存在则返回默认控制器,将已获取的name传递给操作,或者这个规则应该这样写,先检查默认模块的默认控制器中是否存在该操作,如果不存在,则检查默认模块中是否有该控制器,如没有,检查是否为模块。不知道我这个逻辑对系统的影响是否较小,请各位亲指正

最佳答案
评论( 相关
后面还有条评论,点击查看>>