我目前正在開發一個使用Laravel 5.2的Web應用程序,在數據庫中我保存了一些配置,我沿着應用程序中的許多控制器使用該設置,所以我沒有想要一遍又一遍地重複同一件事。 我只想在應用程序啓動時諮詢它,並且這種方式也可以減少代碼並且不會重複。我讀this,但它似乎是對舊版本框架的舊回答。 那麼,在Laravel 5.2我該怎麼做呢?使變量可訪問整個Laravel 5.2應用程序
0
A
回答
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');
瞭解Middleware和Binding。另外請記住,這可以通過不同的方式完成。
0
好的,我應該在哪裏加載該變量的值?我擁有數據庫中的所有值。這似乎是用於靜態值 –
你'加載'它當然你需要它。 –