无法在运行时更改配置值,更改不会保存。 Laravel 8

Can't change configuration value at runtime, change doesn't save. Laravel 8

设置控制器:

public function index()
{
    return view('backend.settings.index');
}

public function update(Request $request)
{
    $settings = $request->input('name');
    config(['settings.site_name' => $settings]);

    return redirect()->route('settings');
}

查看:

<form action="{{ route('settings.update') }}" method="POST">
@csrf
    <div class="form-group">
        <label for="name">Site name</label>
        <input type="text" name="name" value="{{ config('settings.site_name') }}" id="name" required>
    </div>
    <div class="form-group">
        <input type="submit" class="paper-btn btn-secondary" value="Update">
    </div>
</form>

变量 $settings 从输入中获取正确的数据,我用 dd() 检查了这一点,但是更改在重定向后没有保存。我做错了什么?

像这样的 运行 时间配置设置不会持久化,因为 Config Repository 仅将配置加载到内存中,不处理持久性,因此您只在内存中设置一个元素,当您设置配置值。请求完成后,内存就消失了;每个请求都在启动一个新进程,该进程正在重新启动框架并加载配置。

您可能应该考虑将您的设置存储在数据库中并缓存它们。然后您可以从持久存储中检索它们,然后根据您为设置提取的内容设置这些配置值(在 运行 时间)。