adnduweb / ci4_settings
CodeIgniter 4的轻量级设置管理
1.0.6.8
2020-10-19 19:52 UTC
Requires
- php: >=7.2
Requires (Dev)
- codeigniter4/framework: dev-master
README
CodeIgniter 4的轻量级设置管理
快速开始
- 使用Composer安装:
> composer require adnduweb/settings
- 更新数据库:
> php spark migrate -all
- 添加设置:
> php spark settings:add timezone user America/New_York
- 加载服务:
$settings = service('settings');
- 按用户获取/设置设置
$settings->timezone = $_POST['timezone_preference'];
...
$userTimezone = $settings->timezone;
功能
为CodeIgniter 4提供即用型设置管理
安装
通过Composer轻松安装,利用CodeIgniter 4的自动加载功能,并始终保持最新
> composer require adnduweb/settings
或者,通过下载源文件并将目录添加到app/Config/Autoload.php
来手动安装。
下载文件并包含在自动加载中后,运行任何库迁移以确保数据库正确设置
> php spark migrate -all
配置(可选)
可以通过扩展其配置文件来更改库的默认行为。将Settings.php
复制到app/Config/
,并遵循注释中的说明。如果app/Config中没有找到配置文件,库将使用其自身的。
使用方法
一旦包含库,所有资源就绪,您可以开始添加设置。您可以直接将设置模板导入到settings
表,或使用CLI命令php spark settings:add
手动添加。
Settings还附带一些推荐默认模板的数据库种子。从命令行运行种子
php spark db:seed \\Adnduweb\\Settings\\Database\\Seeds\\SettingsSeeder
这将添加适当的模板和以下设置的默认值
databaseTimezone, serverTimezone, timezone, siteVersion, theme, perPage, brandName, brandLogo, orgName, orgLogo, orgUrl, orgAddress, orgPhone
请注意,种子不会覆盖现有值,因此可以在任何时间安全运行。有关完整列表(包括范围、描述和默认值),请参阅src/Database/Seeds/SettingsSeeder.php。
范围
设置有三个范围之一:会话、用户、全局。
- 全局设置对每个用户都相同,提供了一种动态的方式来设置应用级别的值
- 用户设置从默认模板值开始,但每个用户都可以创建自己的默认值,该值可以在会话之间持续存在
- 会话设置从默认模板值开始,可以由用户更改,但在每个新会话时都会恢复
示例
+---------------+---------+------------------+----------------------------------------------+------------+
| Name | Scope | Content | Notes | Protected? |
+---------------+---------+------------------+----------------------------------------------+------------+
| latestRelease | global | 0.7.6 | Git-style tag of latest code release | 0 |
| perPage | user | 10 | Default number of items to show per page | 1 |
| timezone | user | America/New_York | Local timezone to use across the application | 1 |
| jobsSearch | session | | User's most recent search term for jobs | 1 |
+---------------+---------+------------------+----------------------------------------------+------------+
- 当您发布软件的新版本时
$settings->latestRelease = $newVersion;
- 当用户搜索工作列表时
$settings->jobsSearch = $_POST['searchTerm'];
$data['jobs'] = $jobModel->paginate($settings->perPage);