扩展配置合并至主配置

浏览:2182 发布日期:2017/01/09
好吧,先说说今天坑爹的一个问题。

因为想要整理一下配置(因为我手动添加了一些配置功能,比如固定的站点信息和其他手动附加功能的配置所用项),但是又不想直接添加在application/config.php文件中,so,使用了application/extra,并将几个配置文件放置在其中,其中一个命名为了config.php的扩展配置文件。

那么,问题来了,
原先在模板中定义的 {$Think.config.meta_title}居然失效了(还有一些其他的全部都失效了)

WTH???

然后就是大半个晚上的跳来跳去的找原因:
thinkphp/App.php文件:

配置加载时附加配置名称

扩展配置不是应该合并于主配置文件吗?
这样做的话,只能通过{$Think.config.config.meta_title}来显示值,呃,这也太长了吧?
表示不能理解

下面给出两种解决方法:将 thinkphp/App.php line 476 修改为:Config::load($filename);也就是说,将pathinfo($file, PATHINFO_FILENAME)删除,不给他指定配置名称
这种方法简单粗暴。

另外一种需要在application/config.php主配置文件中定义:'extra_config_merge'=>true,
// 注意,一定要在主配置文件中定义,即application/config.php文件中
将 thinkphp/App.php line 476 修改为:
Config::load($filename, Config::get('extra_config_merge') ? '' : pathinfo($file, PATHINFO_FILENAME));
官方手册说是扩展配置与应用配置合并,事实上并非是“合并”,而是扩充为二级配置,按照上述两种方式可以实现此功能。
希望此文章对有需要的朋友有所帮助,别掉进此坑。
评论(
后面还有条评论,点击查看>>