Możesz utworzyć dostawcę usług, powiedz SettingsServiceProvider
, który ładuje wszystkie ustawienia z bazy danych, a następnie przechowuje je w pamięci podręcznej. Następnie przy kolejnych ładowaniach strony może zwracać wartości ustawień z pamięci podręcznej zamiast odpytywać bazę danych, o co należy się słusznie martwić.
Coś tak prostego jak:
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();
});
});
}
}
Zakładając, że twój model ustawień nazywa się Setting
zgodnie z konwencją nazewnictwa Laravela. Możesz wtedy uzyskać dostęp do ustawień takich jak:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Jeśli chcesz mieć ładniejszy sposób dostępu do ustawień, możesz utworzyć funkcję pomocniczą:
function setting($key)
{
return array_get(app('settings'), $key);
}
Co sprawiłoby, że użycie byłoby takie:
<h1>{{ setting('site.name') }}</h1>
Prawie emuluję config()
wykorzystanie funkcji pomocniczej.