Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modèle de paramètres globaux Laravel

Vous pouvez créer un fournisseur de services, par exemple SettingsServiceProvider , qui charge tous les paramètres de la base de données, puis les met en cache. Ensuite, lors des chargements de page suivants, il pourrait renvoyer des valeurs de paramètres mises en cache plutôt que d'interroger la base de données, ce qui devrait vous préoccuper à juste titre.

Quelque chose d'aussi simple que :

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();
            });
        });
    }
}

En supposant que votre modèle de paramètres s'appelle Setting selon les conventions de nommage de Laravel. Vous pouvez ensuite accéder aux paramètres comme suit :

<h1>{{ array_get(app('settings'), 'site.name') }}</h1>

Si vous vouliez une façon plus agréable d'accéder aux paramètres, vous pouvez créer une fonction d'assistance :

function setting($key)
{
    return array_get(app('settings'), $key);
}

Ce qui ferait un usage comme ceci :

<h1>{{ setting('site.name') }}</h1>

Émulant presque le config() utilisation de la fonction d'assistance.