thinkphp5(tp5)无法获取extra的扩展配置文件的数据(获取扩展配置)

在用tp5搭建后台的时候,要自定义一个扩展配置文件来实现后台配置网站信息,例如名称等等。所以使用了扩展配置文件,在application\extra下面放了一个basic_info.php,basic_info.php内容如下

<?php
/**
 * 网站基本信息文件.
 * 由Extra_Config函数建立.
 * 2020/12/05 19:58:05
 */
return [
	'WEB_TITLE' => '11',
	'WEB_KEYWORD' => '11',
	'WEB_COPYRIGHT' => '11',
	'WEB_DESCRIPTION' => '11',
];
?>

但在读取的时候问题来了
我获取的时候:

// 在控制器中获取网站名称:
\think\Config::get('WEB_TITLE');
Config::get('WEB_TITLE');
Config::get('WEB_TITLE');
//模板里面使用:
{$Think.config.WEB_TITLE}

打印后都为空

我慌了啊,慌的一批,啥情况啊,还能不能好好玩耍了

然后经过苦心研究,各方参考

得出原因:上面的获取方法,是直接获取主配置里面的信息,而不是获取扩展配置里面的信息。

主配置在:application/config.php文件中
扩展配置在:application/extra 文件夹下面建立文件

所以总结下面三个方法:

1. 使用你文件的命名去调用

\think\Config::get('basic_info.WEB_TITLE');
Config::get('basic_info.WEB_TITLE');
Config('basic_info.WEB_TITLE');
//模板里面使用:
{$Think.config.basic_info.WEB_TITLE}

//获取全部
\think\Config::get('basic_info');
Config::get('basic_info');
Config('basic_info');

//获取所有config
\think\Config::get();
Config::get();

2. 扩展配置合并至主配置(第一种)

修改 \thinkphp\library\think\App.php

// 读取扩展配置文件
if (is_dir(CONF_PATH . $module . 'extra')) {
	$dir   = CONF_PATH . $module . 'extra';
	$files = scandir($dir);
	foreach ($files as $file) {
		if ('.' . pathinfo($file, PATHINFO_EXTENSION) === CONF_EXT) {
			$filename = $dir . DS . $file;
			Config::load($filename, pathinfo($file, PATHINFO_FILENAME));	// 修改这一行代码
		}
	}
}

Config::load($filename, pathinfo($file, PATHINFO_FILENAME)); 修改为:Config::load($filename); 不给他指定配置名称。

3. 扩展配置合并至主配置(第二种)

第一步:application/config.php主配置文件中定义

// 注意,一定要在主配置文件中定义,即application/config.php文件中
'extra_config_merge'=>true,

修改 \thinkphp\library\think\App.php

// 读取扩展配置文件
if (is_dir(CONF_PATH . $module . 'extra')) {
	$dir   = CONF_PATH . $module . 'extra';
	$files = scandir($dir);
	foreach ($files as $file) {
		if ('.' . pathinfo($file, PATHINFO_EXTENSION) === CONF_EXT) {
			$filename = $dir . DS . $file;
			Config::load($filename, pathinfo($file, PATHINFO_FILENAME));	// 修改这一行代码
		}
	}
}

第二步:将 Config::load($filename, pathinfo($file, PATHINFO_FILENAME)); 修改为:Config::load($filename, Config::get('extra_config_merge') ? '' : pathinfo($file, PATHINFO_FILENAME));

用方法二和方法三则可以直接使用下面方法获取配置

\think\Config::get('WEB_TITLE');
Config::get('WEB_TITLE');
//模板里面使用:
{$Think.config.WEB_TITLE}

application\extra 相关的扩展配置的详细使用方式,请看我的这篇文章:点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值