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