[英]Adding a new config file in Laravel 5 not working
我希望在我的Laravel 5應用程序中有一個新的配置文件來存儲我的所有常量。在瀏覽網絡后,我發現建議的解決方案似乎是創建一個新的配置文件,返回一組鍵值對然后使用它。 所以我創建了以下文件:
<?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
我是否必須做其他事情才能讓它發揮作用?
在Laravel 5中,為了避免這種麻煩,您可以使用config
helper函數來獲取配置項,如下所示:
config('constants.ADMIN_EMAIL')
好,易於 ;)
Config
類是全局命名空間中的別名。 要從控制器內部(在App\\Http\\Controllers
命名空間中)引用它,您必須在前面加上反斜杠:
echo \Config::get('constants.ADMIN_EMAIL');
或者在控制器類上面添加一個use
語句:
use Config;
class MyController extends Controller {
作為替代方案,您可能還希望使用依賴注入來訪問配置。 這看起來有點像這樣:
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');
我今天遇到了同樣的問題,我找到了一個優雅的解決方案:將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!
]);
}
原因在函數的評論中得到了很好的解釋
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.