簡體   English   中英

在Laravel 5中添加新的配置文件無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM