在 Laravel 5 中添加新的配置文件不起作用
Adding a new config file in Laravel 5 not working
我想在我的 Laravel 5 应用程序中创建一个新的配置文件来存储我所有的常量。在网上查看后,我发现推荐的解决方案似乎是创建一个新的配置文件 returns 一组键值对,然后使用它。所以我创建了以下文件:
<?php
// config/constants.php
return [
'SITE_NAME' => 'Site Name',
'SITE_EMAIL' => 'email@site.com',
'ADMIN_EMAIL' => 'admin@site.com'
];
然后在我的一个控制器中,我尝试访问这些值之一,如下所示:
echo Config::get('constants.ADMIN_EMAIL');
我刚收到以下错误:
FatalErrorException in WelcomeController.php line 46:
Class 'App\Http\Controllers\Config' not found
我是否必须执行其他操作才能使其正常工作?
Config
class 是全局命名空间中的别名。要从控制器内部(在 App\Http\Controllers
命名空间中)引用它,您必须在它前面加上反斜杠:
echo \Config::get('constants.ADMIN_EMAIL');
或者在controller上面添加use
语句class:
use Config;
class MyController extends Controller {
作为替代方案,您可能还想使用 dependency injection 来访问配置。这看起来有点像这样:
class MyController extends Controller {
public function __construct(Illuminate\Config\Repository $config){
$this->config = $config;
}
public function index(){
echo $this->config->get('constants.ADMIN_EMAIL');
}
}
正如@Bernig 所建议的,您也可以简单地使用新的 config()
辅助函数:
echo config('constants.ADMIN_EMAIL');
在Laravel 5中,为了避免这种头痛,你可以使用config
辅助函数来获取一个配置项,像这样:
config('constants.ADMIN_EMAIL')
简单易用 ;)
我今天遇到了同样的问题,我找到了一个优雅的解决方案:
将 config/your_new_config.php
添加到 ConfigServiceProvider
,如下所示:
/**
* Overwrite any vendor / package configuration.
*
* This service provider is intended to provide a convenient location for you
* to overwrite any "vendor" or package configuration that you may want to
* modify before the application handles the incoming request / command.
*
* @return void
*/
public function register()
{
config([
'config/your_new_config.php', // add your new config file here!
]);
}
原因在函数的注释中有很好的解释
我想在我的 Laravel 5 应用程序中创建一个新的配置文件来存储我所有的常量。在网上查看后,我发现推荐的解决方案似乎是创建一个新的配置文件 returns 一组键值对,然后使用它。所以我创建了以下文件:
<?php
// config/constants.php
return [
'SITE_NAME' => 'Site Name',
'SITE_EMAIL' => 'email@site.com',
'ADMIN_EMAIL' => 'admin@site.com'
];
然后在我的一个控制器中,我尝试访问这些值之一,如下所示:
echo Config::get('constants.ADMIN_EMAIL');
我刚收到以下错误:
FatalErrorException in WelcomeController.php line 46:
Class 'App\Http\Controllers\Config' not found
我是否必须执行其他操作才能使其正常工作?
Config
class 是全局命名空间中的别名。要从控制器内部(在 App\Http\Controllers
命名空间中)引用它,您必须在它前面加上反斜杠:
echo \Config::get('constants.ADMIN_EMAIL');
或者在controller上面添加use
语句class:
use Config;
class MyController extends Controller {
作为替代方案,您可能还想使用 dependency injection 来访问配置。这看起来有点像这样:
class MyController extends Controller {
public function __construct(Illuminate\Config\Repository $config){
$this->config = $config;
}
public function index(){
echo $this->config->get('constants.ADMIN_EMAIL');
}
}
正如@Bernig 所建议的,您也可以简单地使用新的 config()
辅助函数:
echo config('constants.ADMIN_EMAIL');
在Laravel 5中,为了避免这种头痛,你可以使用config
辅助函数来获取一个配置项,像这样:
config('constants.ADMIN_EMAIL')
简单易用 ;)
我今天遇到了同样的问题,我找到了一个优雅的解决方案:
将 config/your_new_config.php
添加到 ConfigServiceProvider
,如下所示:
/**
* Overwrite any vendor / package configuration.
*
* This service provider is intended to provide a convenient location for you
* to overwrite any "vendor" or package configuration that you may want to
* modify before the application handles the incoming request / command.
*
* @return void
*/
public function register()
{
config([
'config/your_new_config.php', // add your new config file here!
]);
}
原因在函数的注释中有很好的解释