2017-02-13 88 views
0

我目前正在開發一個使用Laravel 5.2的Web應用程序,在數據庫中我保存了一些配置,我沿着應用程序中的許多控制器使用該設置,所以我沒有想要一遍又一遍地重複同一件事。 我只想在應用程序啓動時諮詢它,並且這種方式也可以減少代碼並且不會重複。我讀this,但它似乎是對舊版本框架的舊回答。 那麼,在Laravel 5.2我該怎麼做呢?使變量可訪問整個Laravel 5.2應用程序

回答

1

在給出的link在你的問題中,給出了Laravel 4.x的答案,如果你想在5.2和更高版本中實現相同的技術,那麼你可以使用全局中間件。要做到這一點,只是從你的終端使用類似下面創建一箇中間件:

php artisan make:middleware GlobalConfigMiddleware 

這將創建一個在您app/Http/Middleware目錄中間件(GlobalConfigMiddleware.php)。在這個文件中,你需要實現建立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); 
} 

然後,在你app/Http/Kernel.php類的$middleware屬性添加這個中間件類,例如:

protected $middleware = [ 
    // ... 
    \App\Http\Middleware\GlobalConfigMiddleware::class, 
]; 

現在,你可以使用這樣的配置:

$site_settings = app('site_settings'); 

瞭解MiddlewareBinding。另外請記住,這可以通過不同的方式完成。

0

您可以使用confighelper,並設置一些自定義的配置變量

設置一個配置無功

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

獲取一個配置無功

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

如果你想讓它要在啓動時運行,可以使用ServiceProvider

並填寫boot()函數中的配置。

+0

好的,我應該在哪裏加載該變量的值?我擁有數據庫中的所有值。這似乎是用於靜態值 –

+0

你'加載'它當然你需要它。 –