无法在运行时更改配置值,更改不会保存。 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 仅将配置加载到内存中,不处理持久性,因此您只在内存中设置一个元素,当您设置配置值。请求完成后,内存就消失了;每个请求都在启动一个新进程,该进程正在重新启动框架并加载配置。
您可能应该考虑将您的设置存储在数据库中并缓存它们。然后您可以从持久存储中检索它们,然后根据您为设置提取的内容设置这些配置值(在 运行 时间)。
设置控制器:
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 仅将配置加载到内存中,不处理持久性,因此您只在内存中设置一个元素,当您设置配置值。请求完成后,内存就消失了;每个请求都在启动一个新进程,该进程正在重新启动框架并加载配置。
您可能应该考虑将您的设置存储在数据库中并缓存它们。然后您可以从持久存储中检索它们,然后根据您为设置提取的内容设置这些配置值(在 运行 时间)。