Codeigniter 4 /CI4/ 使用数据库保存站点配置/ 如何使密钥和值在全球范围内可访问
Codeigniter 4 /CI4/ Using database to keep site configurations/ How to make key and value accessible globally
我有一个数据库,其中包含我站点的多个基本配置设置。这个想法是从数据库中提取值,然后使这些值可以在全球范围内访问。我还想实施 $this->cachePage(DAY);
以确保网站不会不断要求配置设置。
这是mysqltable
我已将以下代码放入 public function initController
方法中
基地控制器:
$global_app_settings = array();
$this->AppSettingModel = new \App\Models\AppSettingModel;
$app_settings = $this->AppSettingModel->getAppSettings();
foreach ($app_settings as $row) {
$global_app_settings[$row->app_setting_key] = $row->app_setting_value;
}
以上代码运行良好。如果我打印到屏幕,它会产生以下内容;
Array
(
[dh_company_name] => A Big Company
[dh_phone_number] => +81-3-5555-5555
[dh_fax_number] => +81-3-5555-5556
)
我的问题如下;
- 如何使数组在我的应用程序中全局可用?
- 我在哪里可以添加这个?
$this->cachePage(DAY);
在BaseController
class中定义一个受保护的变量并在initController
中设置它
将其放入您的控制器
public function __construct()
{
this->cachePage(15);
}
其实很简单
public function loadGlobalSettings()
{
$globalSettings = cache('global_settings');
if (null === $globalSettings) {
$appSettingModel = model('\App\Models\AppSettingModel');
$app_settings = $appSettingModel->getAppSettings();
$globalSettings = [];
foreach ($app_settings as $row) {
$globalSettings[$row->app_setting_key] = $row->app_setting_value;
}
cache()->save('global_settings', $globalSettings, DAY*15);
}
return $globalSettings;
}
运行方式:
- 尝试从缓存中获取。
- 如果缓存不存在(返回null),加载模型,获取设置,然后缓存它。
- Return 设置数组。
玩得开心!
我有一个数据库,其中包含我站点的多个基本配置设置。这个想法是从数据库中提取值,然后使这些值可以在全球范围内访问。我还想实施 $this->cachePage(DAY);
以确保网站不会不断要求配置设置。
这是mysqltable
我已将以下代码放入 public function initController
方法中
基地控制器:
$global_app_settings = array();
$this->AppSettingModel = new \App\Models\AppSettingModel;
$app_settings = $this->AppSettingModel->getAppSettings();
foreach ($app_settings as $row) {
$global_app_settings[$row->app_setting_key] = $row->app_setting_value;
}
以上代码运行良好。如果我打印到屏幕,它会产生以下内容;
Array
(
[dh_company_name] => A Big Company
[dh_phone_number] => +81-3-5555-5555
[dh_fax_number] => +81-3-5555-5556
)
我的问题如下;
- 如何使数组在我的应用程序中全局可用?
- 我在哪里可以添加这个?
$this->cachePage(DAY);
在BaseController
class中定义一个受保护的变量并在initController
将其放入您的控制器
public function __construct()
{
this->cachePage(15);
}
其实很简单
public function loadGlobalSettings()
{
$globalSettings = cache('global_settings');
if (null === $globalSettings) {
$appSettingModel = model('\App\Models\AppSettingModel');
$app_settings = $appSettingModel->getAppSettings();
$globalSettings = [];
foreach ($app_settings as $row) {
$globalSettings[$row->app_setting_key] = $row->app_setting_value;
}
cache()->save('global_settings', $globalSettings, DAY*15);
}
return $globalSettings;
}
运行方式:
- 尝试从缓存中获取。
- 如果缓存不存在(返回null),加载模型,获取设置,然后缓存它。
- Return 设置数组。
玩得开心!