Můžete vytvořit poskytovatele služeb, řekněte SettingsServiceProvider
, který načte všechna nastavení z databáze a poté je uloží do mezipaměti. Potom při dalším načtení stránky může vrátit hodnoty nastavení uložené v mezipaměti, místo aby se dotazoval na databázi, což by vás mělo právem znepokojovat.
Něco tak jednoduchého jako:
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();
});
});
}
}
Za předpokladu, že se váš model nastavení nazývá Setting
podle Laravelových konvencí pojmenování. Poté můžete přistupovat k nastavení takto:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Pokud byste chtěli hezčí způsob přístupu k nastavení, můžete vytvořit pomocnou funkci:
function setting($key)
{
return array_get(app('settings'), $key);
}
Což by znamenalo použití takto:
<h1>{{ setting('site.name') }}</h1>
Téměř emuluje config()
použití pomocné funkce.