Du kan skapa en tjänsteleverantör, säg SettingsServiceProvider
, som laddar alla inställningar från databasen och sedan cachar dem. Vid efterföljande sidladdningar kan den returnera cachade inställningsvärden snarare än att fråga databasen, vilket du med rätta bör vara orolig över.
Något så enkelt som:
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();
});
});
}
}
Förutsatt att din inställningsmodell heter Setting
enligt Laravels namnkonventioner. Du kan sedan komma åt inställningar som så:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Om du ville ha ett snyggare sätt att komma åt inställningarna kan du skapa en hjälpfunktion:
function setting($key)
{
return array_get(app('settings'), $key);
}
Vilket skulle göra användningen så här:
<h1>{{ setting('site.name') }}</h1>
Emulerar nästan config()
hjälpfunktionens användning.