alhimik1986 / yii2_settings_module
模块,允许获取和设置应用程序设置,并通过网页进行访问。
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-08-29 04:31:03 UTC
README
应用程序设置存储和获取模块。类似于 Yii::$app->params,但可以通过网页界面进行编辑。
用途
在系统设置中可以存储数据库连接参数,并通过网页界面进行更改。这非常方便。特别是当代码被混淆且无法在其中设置配置时,这尤为重要。当然,可以将设置移至单独的文件,但用户可能不喜欢在文件夹深处搜索该文件并进行相应的修改,例如按照json、xml、yaml或ini格式的愚蠢规则进行修改。通过漂亮的网页界面进行设置修改将更有趣。演示
[](http://www.youtube.com/watch?v=GDnTz0CJKHk)安装
使用composer下载。在应用程序文件夹中的composer.json文件中添加以下行:
"require": {
"alhimik1986/yii2_settings_module": "1.0"
},
或者在命令行中输入:
$ composer require alhimik1986/yii2_settings_module
在config/web.php文件中编写设置:
$config = [
'components' => [
...........
'settings' => ['class' => 'alhimik1986\yii2_settings_module\components\Settings'], // Для доступа к настройкам
],
// Для доступа на странцу редактирования настроек
'modules' => [
...........
'settings' => [
'class' => 'alhimik1986\yii2_settings_module\Module',
// Необязательные параметры
'password' => '123', // Пароль для в входа на страницу редактирования настроек. По умолчанию 123, если указать пустой, то вход без авторизации
'password_in_settings' => false, // Если указать true, то брать и проверять пароль в настройках (settings.json), а не в web.config-файле.
'allowedIPs' => ['127.0.0.1', '::1'], // Доступ по IP-адресам
//'l18n_base_path' => realpath(__DIR__ .'/../messages/alhimik1986/yii2_settings_module'); // Папка, в которой содержатся переводы на другие языки
],
],
];
// 或者这样
$config['components']['settings']['class'] = 'alhimik1986\yii2_settings_module\components\Settings'; // Для доступа к настройкам
$config['modules']['settings']['class'] = 'alhimik1986\yii2_settings_module\Module'; // Для доступа на странцу редактирования настроек
设置访问地址
https:///index.php?r=settings密码:123
所有这些设置都位于文件vendor/alhimik1986/yii2_settings_module/settings/settings.json中
设置访问示例
``` $db = Yii::$app->settings->param['db']; // 这里存储着缓存的数据 $db = Yii::$app->settings->get('db'); // 同上,但数据不缓存,但性能几乎不受影响 Yii::$app->settings->set('password', '1234243'); // 更改设置"password"的值 ``` 在变量$db中,value、label、description键被省略,因为它们不需要。只取name(设置键)和value(设置值)。即如果settings.json中有: ``` { "db": { "value": { "connectionString": "sqlite:@app\/data\/database.s3db", "username": "", "password": "", "tablePrefix": "", "class": "yii\\db\\Connection" }, "label": "数据库连接设置.", "description": "" }, } ``` 则$db等于: ``` [ 'connectionString' => 'sqlite:@app/data/database.s3db', 'username' => '', 'password' => '', 'tablePrefix' => '', 'class' => 'yii\db\Connection', ] ```在web.php文件中使用此模块的示例,用于设置数据库连接参数
``` require_once(realpath(__DIR__.'/../vendor/alhimik1986/yii2_settings_module/models/SettingsModel.php')); $config['components']['db'] = alhimik1986\yii2_settings_module\models\SettingsModel::getSetting('db'); ```设置参数签名
典型的设置如下所示 ``` // 设置模块 $config['modules']['settings']['class'] = 'alhimik1986\yii2_settings_module\Module'; //$config['modules']['settings']['password'] = '123'; // 编辑设置页面密码。默认为123,如果留空,则无需认证进入 $config['modules']['settings']['password_in_settings'] = true; // 如果设置为true,则从设置(settings.json)中获取和验证密码,而不是从web.config文件中获取。 $config['modules']['settings']['allowedIPs'] = ['127.0.0.1', '::1']; // 通过IP地址访问 //$config['modules']['settings']['l18n_base_path' = realpath(__DIR__ .'/../messages/alhimik1986/yii2_settings_module'); // 包含其他语言翻译的文件夹 $config['modules']['settings']['settings_json_file'] = realpath(__DIR__ .'/../config').'/settings.json';// 访问设置 $config['components']['settings']['class'] = 'alhimik1986\yii2_settings_module\components\Settings';
// 通过设置连接到数据库 $settings_path = realpath(DIR .'/../config').'/settings.json'; require_once(realpath(DIR .'/../vendor/alhimik1986/yii2_settings_module/models/SettingsModel.php')); alhimik1986\yii2_settings_module\models\SettingsModel::set_custom_settings_json_file_path($settings_path); $config['components']['db'] = alhimik1986\yii2_settings_module\models\SettingsModel::getSetting('db');