php-Codeigniter 4 /CI4/データベースを使用してサイト構成を維持する/キーと値にグローバルにアクセスできるようにする方法
自分のサイトのいくつかの基本構成設定を保持するデータベースがあります。アイデアは、データベースから値をプルしてから、値をグローバルにアクセスできるようにすることです。また、 次のコードを 上記のコードは正常に機能します。画面に印刷すると、次のようになります。
私の質問は次のとおりです; $this->cachePage(DAY); を実装して、サイトが常に構成設定を要求しないようにします。
public function initController
メソッドに入れました
BaseController:
$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);
答え :
解決策:
実際には簡単です。
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が返される)、モデルをロードし、設定を取得してからキャッシュします。
- 設定配列を返します。
楽しんでください!
答え :
解決策:
これをコントローラーに入れます BaseController クラスで保護変数を定義し、それを
initController
public function __construct()
{
this->cachePage(15);
}
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。