使用thinkphp的过程中,一直纳闷一个问题:
在配置文件中新增一行数据后,往往管理页面就正常获取不到配置表了。
仔细追踪之下发现
C('CONFIG_GROUP_LIST']
这种基本的功能都返回的空值。
再往前看时,发现
AdminController.class.php
中对配置缓存有一个初始化过程:
$config = S('DB_CONFIG_DATA');
C($config);
然而这里的S方法确没能正确获取数据库数据。
S方法起到一个数据库缓存读写的作用,想必后台新增配置项时,会清空数据库配置项缓存,于是再次调用这个方法的时候就没有东西返回了。
所以这里应该改进一下:
/* 读取数据库中的配置 */
$config = S('DB_CONFIG_DATA');
if(!$config){
$config = api('Config/lists');
S('DB_CONFIG_DATA',$config);
}
C($config); //添加配置
一切OK,皆大欢喜。