使变量可以访问整个Laravel 5.2应用程序

时间:2017-02-13 21:08:04

标签: php laravel laravel-5.2

我目前正在使用Laravel 5.2开发Web应用程序,在数据库中保存了一些配置,我在应用程序中使用了很多控制器的设置,所以我不想咨询一遍又一遍同样的事情。 我只想在应用程序启动时查阅它,这样也可以减少代码而不会重复。我读过this但似乎是旧版本框架的旧答案。 那么,在Laravel 5.2中我该怎么做呢?

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}}

了解MiddlewareBinding。还要记住,这可以用不同的方式完成。

答案 1 :(得分:0)

您可以使用config helper并设置一些自定义配置变量

设置配置变量

config(['app.yourvar' => 'IlikeCookies']);

获取配置变量

$value = config('app.yourvar', 'fallback');

如果您希望它在启动时运行,您可以使用ServiceProvider

并填写boot()函数中的配置。