ThinkPHP V2.2说明文档没有说明的那些事实例小结 |
本文实例讲述了ThinkPHP V2.2说明文档没有说明的那些事 。分享给大家供大家参考 。具体分析如下: 以下是总结一下说明文档没有提及和详细说明的内容:(日后不断更新) 1. 在配置文件中设置了APP_DEBUG为true,进入debug模式的时候,页面默认是不会显示trace信息信息的 。 解决方法:SHOW_PAGE_TRACE=>true 加上这个就可以了 。 2.action 内的success 方法只需要存入两个参数 success($message,$ajax=false),调用的页面是没写也会显示 。 解决方法:要在配置文件中加上: 其实2.2版本中默认设置是这样的: TMPL_ACTION_ERROR => THINK_PATH./Tpl/dispatch_jump.html 。 3.用普通标签load模板引擎直接无视 。 解决方法:无(还没找到原因) 4.__ROOT__在模板输入只会是空字符,在页面跳转后就不能用__ROOT__地址回到首页了 。 解决方法:自己去修改__ROOT__,又或者在所有页面中加上<base href=http://网站访问根目录地址 />, 如:<base href=http://winesbox.com /> 5.有些服务器上ThinkPHP框架会出现以下问题: 无法加载模块,这情况在是否有设置.htaccess文件无关 。 问题在于ThinkPHP\Lib\Think\Util\Dispatcher.class.php中的getPathInfo方法中 此方法是重新负值于$_SERVER[PATH_INFO],问题就来了 $_SERVER[PATH_INFO] $_SERVER[ORIG_PATH_INFO] $_SERVER[REDIRECT_PATH_INFO] $_SERVER["REDIRECT_URL"] 以上的系统变量不一定有,这个是全蛋疼的事,所以getPathInfo会一路判断有哪个就要怎么处理什么的 。 出问题的地方在于判断有$_SERVER["REDIRECT_URL"]之后的操作,原码: $path = $_SERVER["REDIRECT_URI"]; if(empty($_SERVER[QUERY_STRING]) || $_SERVER[QUERY_STRING] == $_SERVER["REDIRECT_QUERY_STRING"]) { $parsedUrl = parse_url($_SERVER["REQUEST_URL"]); if(!empty($parsedUrl[query])) { $_SERVER[QUERY_STRING] = $parsedUrl[query]; parse_str($parsedUrl[query], $GET); $_GET = array_merge($_GET, $GET); reset($_GET); }else { unset($_SERVER[QUERY_STRING]); } reset($_SERVER); } 标成红色的就是出错的原因,改成REQUEST_URI就会正常的了 。 *注:$_SERVER["REQUEST_URI"] 获取http://blog.lpreterite.com后面的值,包括/ 希望本文所述对大家基于ThinkPHP的php程序设计有所帮助 。 |