Использование настроек конфигурации из базы данных
Иногда при разработке приложения появляется необходимость использовать настройки конфигурации из таблицы базы данных. Например, настройки доступов для отправки email через smtp-сервер. Настройки будут редактироваться через раздел в админке.
Для работы с настройками создадим класс Settings. Так как мы его будем использовать для получения значений в конфигах, нам нужно создать объект подключения к базе данных. Это можно сделать в конструкторе класса Settings.
private $db;
public function __construct()
{
$config = require(__DIR__ . '/../config/db.php');
$this->db = Yii::createObject($config);
}
Далее необходим метод для получения значения настройки. Если такой настройки не будет, то значение берется из файла .env
public function getSettingsValue($key): string
{
$value = $this->db->createCommand("SELECT value FROM setting WHERE setting.key = '$key'")->queryOne();
return !empty($value['value']) ? trim($value['value']) : env('APP_VARIABLE');
}
В файле конфигурации config/web.php получаем настройки. Подключаем класс
use app\setting\Setting;
Получаем значение необходимой настройки
$setting = new Setting();
$config['components']['mailer'] = [
'smtpHost' => $setting->getSettingValue('smtpHost'),
];
Комментарии:
Комментариев пока нет, но вы можете оставить первый
Добавить комментарий:
Для того, чтобы оставить комментарий необходимо авторизоваться