簡體   English   中英

在請求期間訪問新的 Laravel 配置文件

[英]Accessing new Laravel config files during request

我有一個場景,其中在同一個傳入請求期間創建和訪問 Laravel 配置文件。 但是,當訪問新存儲的配置文件的值時, config()無法訪問文件的鍵/值。

這是一個示例場景:


public function create(Request $request)
{
    $settings = ['foo' => 'bar'];
    // Store the config.
    Storage::disk('config')->put("settings.php", '<?php return ' . var_export($settings, true) . ';');
    // Results in an error, value not found.
    $config_value = config('settings.foo'); 
}

有沒有辦法在運行時重新注冊 Laravel 配置文件?

將內容保存到 php 文件config/settings.php (顯然)不是最好的方法。

將配置保存到數據庫中,或者簡單地使用config()助手來分配如下值:

class MyConfigProvider extends ServiceProvider
{
    public function boot() {
        $this->app->booted(function () {
            // This will set the config setting `config/settings.php['app_name']` at runtime:
            config([
                'settings.app_name' => 'My App Name'
            ]);
        });
    }
}

然后,確保在config/app.php['providers']數組中盡早在堆棧中加載此服務提供程序。 基本上它會覆蓋您在config/settings.php中設置的任何預定義配置。 您甚至可以從請求 object 或您的數據庫中檢索值。

是的,有一種方法:

config()->set('settings.foo', $somethingNew);

然后你可以正常閱讀:

$config_value = config('settings.foo'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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