Você pode criar um provedor de serviços, digamos
SettingsServiceProvider
, que carrega todas as configurações do banco de dados e as armazena em cache. Em seguida, em carregamentos de página subsequentes, ele pode retornar valores de configuração em cache em vez de consultar o banco de dados, com o qual você deve se preocupar com razão. Algo tão simples como:
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();
});
});
}
}
Supondo que seu modelo de configurações seja chamado de
Setting
conforme as convenções de nomenclatura do Laravel. Você pode então acessar as configurações assim:<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Se você quiser uma maneira mais bonita de acessar as configurações, poderá criar uma função auxiliar:
function setting($key)
{
return array_get(app('settings'), $key);
}
O que faria uso assim:
<h1>{{ setting('site.name') }}</h1>
Quase emulando o
config()
uso da função auxiliar.