Bạn có thể tạo một nhà cung cấp dịch vụ, nói SettingsServiceProvider
, tải tất cả các cài đặt từ cơ sở dữ liệu và sau đó lưu chúng vào bộ nhớ đệm. Sau đó, trong các lần tải trang tiếp theo, nó có thể trả về các giá trị cài đặt được lưu trong bộ nhớ cache thay vì truy vấn cơ sở dữ liệu, điều mà bạn nên quan tâm một cách chính đáng.
Một cái gì đó đơn giản như:
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();
});
});
}
}
Giả sử mô hình cài đặt của bạn được gọi là Setting
theo quy ước đặt tên của Laravel. Sau đó, bạn có thể truy cập các cài đặt như sau:
<h1>{{ array_get(app('settings'), 'site.name') }}</h1>
Nếu bạn muốn một cách truy cập cài đặt đẹp hơn, bạn có thể tạo một hàm trợ giúp:
function setting($key)
{
return array_get(app('settings'), $key);
}
Cái nào sẽ làm cho việc sử dụng như thế này:
<h1>{{ setting('site.name') }}</h1>
Gần như mô phỏng config()
cách sử dụng của chức năng trợ giúp.