损坏者 / 设置
CodeIgniter 4 的轻量级设置管理
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.3 || ^8.0
Requires (Dev)
- codeigniter4/authentication-implementation: 1.0
- codeigniter4/codeigniter4: dev-develop
- myth/auth: dev-develop
- tatter/tools: ^1.10
Suggests
- codeigniter4/authentication-implementation: Allows for user setting overrides
This package is auto-updated.
Last update: 2024-09-18 15:39:31 UTC
README
CodeIgniter 4 的轻量级设置管理
警告
自从这个库的最后一个主要版本以来,CodeIgniter 团队已经发布了他们自己的 设置库。这个库和这个库提供了一些不重叠的功能,但它们确实在名称和实现上存在冲突。这个库的未来尚未确定,但有一些选择
- 弃用此库,并将任何缺失的功能移至 CodeIgniter 版本
- 将此库作为官方包的扩展进行重构
- 通过更改名称以避免冲突来维护当前功能
要关注或参与此库的规划,请访问 即将到来的更改讨论。
快速开始
- 使用 Composer 安装:
> composer require tatter/settings
- 更新数据库:
> php spark migrate -all
- 使用
spark
创建模板:> php spark settings:add timezone user America/New_York
- 使用服务来访问用户设置
service('settings')->timezone = $_POST['timezone_preference'];
...
$userTimezone = service('settings')->timezone;
特性
为 CodeIgniter 4 提供 ready-to-use 的设置管理
安装
通过 Composer 轻松安装,利用 CodeIgniter 4 的自动加载功能,并始终保持最新状态
> composer require tatter/settings
或者,通过下载源文件并将目录添加到 app/Config/Autoload.php
来手动安装。
文件下载并包含在自动加载中后,运行任何库迁移以确保数据库正确设置
> php spark migrate -all
使用方法
一旦库被包含,所有资源都准备就绪,您就可以开始添加设置。您可以直接将设置模板导入到 settings
表中,或者使用 CLI 命令 php spark settings:add
手动添加。
设置 还附带了一些推荐的默认模板的数据库生成器。从命令行运行生成器
php spark db:seed "Tatter\Settings\Database\Seeds\SettingsSeeder"
这将添加相应范围的模板和以下设置的默认值
警告:此列表可能在主要版本之间发生变化。
请注意,生成器不会覆盖现有值,因此可以在任何时候安全地重新运行。另请参阅 src/Database/Seeds/SettingsSeeder.php。
设置范围
设置
有三种模式:全局、用户和动态。
- 全局设置对每个用户都相同,允许项目所有者设置应用程序级别的值;将
protected
设置为1
- 用户设置从模板值开始,但每个用户都可以根据自己的值创建自己的值,该值可以跨会话持续存在;将
protected
设置为0
- 动态设置没有模板,但可以即时创建和返回;它们仅对当前会话有效。
示例
-
当您发布您软件的新版本时
model('SettingModel')->where('name', 'latestRelease')->update(['content' => '1.2.3']; echo view('home', ['latestRelease' => service('settings')->latestRelease]);
-
当用户搜索工作列表时
$settings->jobsSearch = $_POST['searchTerm']; $data['jobs'] = $jobModel->paginate($settings->perPage);
魔法配置
Settings
包含一个魔法配置文件,允许直接访问模板值。这是一种方便的方式,以传统框架的方式访问库
$logo = config('Settings')->projectLogo;
请注意,与魔法配置中的服务或库值不同,模板默认值直接受影响,不会受到用户覆盖的影响
service('settings')->set('perPage', 20);
echo service('settings')->perPage; // 20
echo config('Settings')->perPage; // 10