Du kan oprette en tjenesteudbyder, f.eks. SettingsServiceProvider
, der indlæser alle indstillingerne fra databasen og derefter cacher dem. Så ved efterfølgende sideindlæsninger kan den returnere cachelagrede indstillingsværdier i stedet for at forespørge databasen, hvilket du med rette bør være bekymret over.
Noget så simpelt 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();
});
});
}
}
Forudsat at din indstillingsmodel hedder Setting
ifølge Laravels navnekonventioner. Du kan derefter få adgang til indstillinger som sådan:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Hvis du ville have en smukkere måde at få adgang til indstillinger på, kunne du oprette en hjælpefunktion:
function setting($key)
{
return array_get(app('settings'), $key);
}
Hvilket ville gøre brug som dette:
<h1>{{ setting('site.name') }}</h1>
Næsten emulerer config()
hjælpefunktionens brug.