我目前正在使用Laravel 5.2开发Web应用程序,在数据库中保存了一些配置,我在应用程序中使用了很多控制器的设置,所以我不想咨询一遍又一遍同样的事情。 我只想在应用程序启动时查阅它,这样也可以减少代码而不会重复。我读过this但似乎是旧版本框架的旧答案。 那么,在Laravel 5.2中我该怎么做呢?
答案 0 :(得分:1)
在您问题的给定link中,为Laravel 4.x提供了答案,如果您想在5.2及更高版本中实现相同的技术,那么您可以使用全局中间件。要做到这一点,只需使用以下内容从终端创建中间件:
app/Http/Middleware
这将在您的handle
目录中创建一个中间件(public function handle($request, Closure $next)
{
// Pseudo Code
app()->singleton('site_settings', function($app) {
// Imagine you have the Setting Eloquent Model
// Get all settings using the Setting model
return \App\Setting::all();
});
// If you use this line of code then it'll be available in any view
// as $site_settings but you may also use app('site_settings') as well
view()->share('site_settings', app('site_settings'));
return $next($request);
}
)。在这个文件中,你需要实现在$middleware
方法中设置配置的逻辑,它应该类似于以下内容:
app/Http/Kernel.php
然后,在protected $middleware = [
// ...
\App\Http\Middleware\GlobalConfigMiddleware::class,
];
类的$site_settings = app('site_settings');
属性中添加此中间件类,例如:
AddNew(): void {
this.person.speaking = this.languages
.map(x => (x.selected===true)
? {label:x.label, selected:x.selected}
: undefined)
.filter(x => x!==undefined);
this.people.push(this.person);
this.person = new Person('', []);
}
现在,你可以像这样使用配置:
{{1}}
了解Middleware和Binding。还要记住,这可以用不同的方式完成。
答案 1 :(得分:0)