ThinkPHP V2.2说明文档没有说明的那些事实例小结

本文实例讲述了ThinkPHP V2.2说明文档没有说明的那些事。分享给大家供大家参考。具体分析如下:

以下是总结一下说明文档没有提及和详细说明的内容:(日后不断更新)

1. 在配置文件中设置了APP_DEBUG为true,进入debug模式的时候,页面默认是不会显示trace信息信息的。

解决方法:'SHOW_PAGE_TRACE'=>true 加上这个就可以了。

2.action 内的success 方法只需要存入两个参数 success($message,$ajax=false),调用的页面是没写也会显示。

解决方法:要在配置文件中加上:
'TMPL_ACTION_SUCCESS'     => 'Public:success'(错误跳转:'TMPL_ACTION_ERROR'     => 'Public:success')

其实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程序设计有所帮助。

(0)

相关推荐

  • Thinkphp关闭缓存的方法

    因在开发中需要经常修改,从而要经常删除缓存,才能看到效果. 所以为了开发的方便,可以把缓存给去除. 1.找到\ThinkPHP\Common\convention.php和\ThinkPHP\Common\debug.php 2.打开这两个文件找到你想要的设置即可. debug.php中 复制代码 代码如下: 'TMPL_CACHE_ON'=>false,      // 默认开启模板缓存 convention.php中' 复制代码 代码如下: TMPL_CACHE_ON'   => fals

  • ThinkPHP3.2.3数据库设置新特性

    ThinkPHP3.2.3版本数据库驱动采用PDO完全重写,配置和使用上面也比之前版本更加灵活和强大,我们来了解下如何使用. 首先,3.2.3的数据库配置信息有所调整,完整的数据库设置包括: 复制代码 代码如下: /* 数据库设置 */  'DB_TYPE'               =>  '',     // 数据库类型  'DB_HOST'               =>  '', // 服务器地址  'DB_NAME'               =>  '',       

  • ThinkPHP 3.2 版本升级了哪些内容

    前言 ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不是什么 3.2.如果你在使用 ThinkPHP 3.1 请勿贸然迁移升级,这可不是简单的覆盖下文件就安然无恙的事情.   1. PHP 的版本 ThinkPHP 3.2 要求 PHP 5.3 以上的版本,而 ThinkPHP 3.1 只需要 PHP 5.2 就好了   2. 程序文件夹的修改 ThinkPHP 3.2 使用 Application 作为程序

  • ThinkPHP 404页面的设置方法

    在很多网站中都会有使用404页面的时候,在ThinkPHP框架中该如何设置呢,接下来我介绍其中一种方法 1.首先要在Lib/Action 下建立EmptyAction.class.php模块 内容如下: 复制代码 代码如下: <?php /*  * @author rocky  * @date 20141021  * @desc 空模块404等错误  * */ class EmptyAction extends CommonAction {     function _empty(){     

  • ThinkPHP文件缓存类代码分享

    取自ThinkPHP的文件缓存类代码,这里就不多废话了,小伙伴们自己看注释吧. <?php /** * @desc 文件缓存 */ class Cache{ const C_FILE = '/Runtime/'; private $dir = ''; const EXT = '.tpl'; private $filename = ''; public function __construct($dir = ''){ $this->dir = $dir; } /** * @desc 设置文件缓存

  • thinkphp 表名 大小写 窍门

    我们有一个表auth_group_access,那么如何使用呢? 在使用M方法时,对于带下划线的表名,可以采用如下方法. M('AuthGroupAccess'); 对应sql语句SQL: SHOW COLUMNS FROM `auth_group_access` [ RunTime:0.009198s ]

  • ThinkPHP3.2.2的插件控制器功能

    3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中某个插件定义的控制器. 当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法. 插件控制器的变量由参数 VAR_ADDON 进行设置,默认为addon,例如我们在URL中传入: 复制代码 代码如下: http://serverName/Home/info/index/addon/SystemInfo 由于传入了addon参数,因此这里的User控制器并非原来的 复制代码 代码如下: Home/Con

  • ThinkPHP中实例Model方法的区别说明

    在TP中,我们可以用下面两种方法去创建一个数据表的映射对象(我暂时用到的) 第一种:$Test = D('Test') 第二种:$Test = new Model('Test') 虽然这两种都可以对数据进行select,insert,delete,udpate操作,在数据验证上有很大的不同, 我们来看看效果,先创建一个 TestModel 复制代码 代码如下: class TestModel extends Model{ protected $_validate = array{ array('

  • ThinkPHP里用U方法调用js文件实例

    本文实例讲述了ThinkPHP里用U方法调用js文件的方法.分享给大家供大家参考.具体如下: 在TP里提供了在模板文件中直接调用函数的快捷方法.U是其中之一.手册里有它的用法: 复制代码 代码如下: {:U('User/insert' )} 先把js文件的后缀改成html(这个不会影响),然后写个JsAction,在里面进行调用: <?php class JsAction extends Action{ function nav() { $this->display('Index:js:nav

  • ThinkPHP V2.2说明文档没有说明的那些事实例小结

    本文实例讲述了ThinkPHP V2.2说明文档没有说明的那些事.分享给大家供大家参考.具体分析如下: 以下是总结一下说明文档没有提及和详细说明的内容:(日后不断更新) 1. 在配置文件中设置了APP_DEBUG为true,进入debug模式的时候,页面默认是不会显示trace信息信息的. 解决方法:'SHOW_PAGE_TRACE'=>true 加上这个就可以了. 2.action 内的success 方法只需要存入两个参数 success($message,$ajax=false),调用的页

  • WEB服务器安全配置说明文档

    WEB服务器安全配置说明文档 网络安全界有句名言:最少的服务加最小的权限等于最大的安全. 公司服务器配置情况如下: 67.68.69.70的服务器安装的系统是WIN2000 Advance Server版本,采用了IIS5.0作为虚拟主机系统,为保证系统的安全和数据的可靠,特将硬盘划分为系统盘与数据盘,WIN2000安装于系统盘上,数据库系统安装在数据盘上. 服务器上采取的安全防护措施如下: 1.    所有的分区都格式化成NTFS格式,保证对用户权限的控制.给予administrators 和

  • 微软官方说明文档 免激活合法运行Vista一年

    其实,微软在Vista激活上的态度十分宽松,如果不是此前某些组织做得过火--擅自架设Vista激活服务器,微软甚至愿意"悄悄"提供给用户免激活长期使用Vista的方式. 事实上,只需将Vista注册表中一个键值从0改为1,就可以无限次延长Vista激活最后期限--微软甚至在自己的Technet网站上提供了相关说明文档. 不过,某些 不良PC销售商有可能利用这一"漏洞"欺骗消费者,声称提供正版Vista激活--而用户至少要到几个月甚至一年后才会发现. 当然,相对目前网

  • CKEditor4配置与开发详细中文说明文档

    一.CKEditor4安装 安装CKEditor 是很容易的.选择合适的过程(新安装或升级),按下面描述的步骤安装. 1.新安装 第一次安装CKEditor,按如下方式进行: 1) 从CKEditor 网站:http://ckeditor.com/download下载最新版本的CKEditor .  2) 将下载的文档解压到你的website根目录下的ckeditor 目录中.你可以将文档放在你的website的任意路径中.ckeditor 目录是缺省目录. 2.升级 要升级现有的CKEdito

  • IntelliJ IDEA查看方法说明文档的图解

    上学的时候,习惯了用eclipse编辑器,刚刚开始工作的时候也是用的是eclipse搞的开发,对eclipse快捷键还是知道的 在eclipse上看方法的文档说明的时候,直接鼠标放上去,就可以直接显示出来方法说明文档. 但是在新换的IntelliJ IDEA编辑器中怎么办.(为啥要换编辑器,因为新编辑器确实diao.) 1.你要是没有改keymap用的是mac版本. 那就是ctrl + j 2.你要是把keymap改成了eclipse里面的keymap,(这个就是我在windows上用的 Int

  • java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.tr

  • java读取word文档,提取标题和内容的实例

    使用的工具为poi,需要导入的依赖如下 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <arti

  • Redis的Python客户端redis-py安装使用说明文档

    1.安装 redis-py是Redis key-value 数据库的 Python 接口,安装如下,后面我们会讲hiredis这个库 复制代码 代码如下: $ sudo pip install redis $ sudo pip install hiredis 2.入门 复制代码 代码如下: >>> import redis >>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0) >>

  • JS日程管理插件FullCalendar中文说明文档

    JS日程管理插件FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中文文档,以供参阅 普通显示设置 属性 描述 默认值 header 设置日历头部信息. 如果设置为false,则不显示头部信息.包括left,center,right左中右三个位置,每个位置都可以对应以下不同的配置: title: 显示当前月份/周/日信息 prev: 用于切换到上一月

  • 几种常见文件格式的说明文档

    bmphttp://dev.gameres.com/Program/Visual/Other/BMPFormat.htm BMP文件结构的探索: http://dev.gameres.com/Program/Visual/Other/WhatIfBMPFormat.docJPEG 简易文档:            http://dev.gameres.com/Program/Visual/Other/JPEG.htm GIF文档:                          http://

随机推荐