Можете да създадете доставчик на услуги, кажете SettingsServiceProvider
, който зарежда всички настройки от базата данни и след това ги кешира. След това при следващи зареждания на страница, той може да върне кеширани стойности на настройките, вместо да прави заявки към базата данни, за което с основание трябва да се притеснявате.
Нещо толкова просто като:
class SettingsServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton('settings', function ($app) {
return $app['cache']->remember('site.settings', 60, function () {
return Setting::pluck('value', 'key')->toArray();
});
});
}
}
Ако приемем, че моделът на настройките ви се нарича Setting
според конвенциите за именуване на Laravel. След това можете да получите достъп до настройки по следния начин:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Ако искате по-хубав начин за достъп до настройките, можете да създадете помощна функция:
function setting($key)
{
return array_get(app('settings'), $key);
}
Което би направило използването по следния начин:
<h1>{{ setting('site.name') }}</h1>
Почти емулира config()
използване на помощната функция.