आप एक सेवा प्रदाता बना सकते हैं, जैसे SettingsServiceProvider
, जो डेटाबेस से सभी सेटिंग्स को लोड करता है और फिर उन्हें कैश करता है। फिर बाद के पृष्ठ लोड होने पर, यह डेटाबेस को क्वेरी करने के बजाय कैश्ड सेटिंग मान वापस कर सकता है, जिसके बारे में आपको उचित रूप से चिंतित होना चाहिए।
कुछ इतना आसान:
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();
});
});
}
}
मान लें कि आपके सेटिंग मॉडल को Setting
कहा जाता है लारवेल के नामकरण सम्मेलनों के अनुसार। फिर आप इस तरह की सेटिंग एक्सेस कर सकते हैं:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
यदि आप सेटिंग्स तक पहुँचने का एक सुंदर तरीका चाहते हैं, तो आप एक सहायक फ़ंक्शन बना सकते हैं:
function setting($key)
{
return array_get(app('settings'), $key);
}
जो इस तरह उपयोग करेगा:
<h1>{{ setting('site.name') }}</h1>
लगभग config()
का अनुकरण कर रहा है सहायक फ़ंक्शन का उपयोग।