Ответ 1
Хорошо, я узнал, как это сделать.
В основном вы должны реализовать bootstrapInterface, пример ниже для моей ситуации.
Задайте путь к вашему классу, который реализует интерфейс:
приложение /Config/web.php:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => [
'log',
'app\base\Settings',
],
//.............
];
Итак, я поместил класс под названием Settings.php
в папку: app\base\Settings.php
.
Тогда это мой файл Settings.php
:
namespace app\base;
use Yii;
use yii\base\BootstrapInterface;
/*
/* The base class that you use to retrieve the settings from the database
*/
class settings implements BootstrapInterface {
private $db;
public function __construct() {
$this->db = Yii::$app->db;
}
/**
* Bootstrap method to be called during application bootstrap stage.
* Loads all the settings into the Yii::$app->params array
* @param Application $app the application currently running
*/
public function bootstrap($app) {
// Get settings from database
$sql = $this->db->createCommand("SELECT setting_name,setting_value FROM settings");
$settings = $sql->queryAll();
// Now let load the settings into the global params array
foreach ($settings as $key => $val) {
Yii::$app->params['settings'][$val['setting_name']] = $val['setting_value'];
}
}
}
Теперь я могу получить доступ к моим настройкам через Yii:$app->params['settings']
глобально.
Дополнительная информация о других способах загрузки файлов здесь.