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