bonk007 / system-settings
应用动态设置
v1.0.0
2024-06-14 08:35 UTC
Requires
- php: ^8.1|^8.2
- laravel/framework: ^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^10.0|^11.0
README
安装
使用composer安装包
composer require bonk007/system-settings
然后运行迁移
php artisan migrate
这就完成了 ⚡
如何使用
设置设置的值
settings()->set('<group>.<key>', <value>);
示例
settings()->set('global-settings.maintenance_scheduled_at', Carbon::parse('2024-07-01 00:00:00'));
如果您需要为特定的可配置模型设置一些值(了解:什么是可配置模型)
settings()->for(<model instance>) ->set('<group>.<key>', <value>);
示例
settings()->for(\App\Models\Organization::find(6)) ->set('invoice.number_format', 'INV/{SEQUENCE}/{MONTH}/{YEAR}');
或者您可以使用
settings()->set('<group>.<key>.<table of configurable model>.<primary key>', <value>);
示例
settings()->set('invoice.number_format.organizations.6', 'INV/{SEQUENCE}/{MONTH}/{YEAR}');
获取设置的值
settings('<group>.<key>', <default value>);
特定可配置模型
settings()->for(<configurable model>) ->get('<group>.<key>', <default value>);
或使用简单方法
settings('<group>.<key>.<table of configurable model>.<primary key>', <default value>)
示例
settings('global-settings.maintenance_scheduled_at'); settings('invoice.number_format.organizations.6'); settings()->for(\App\Models\Organization::find(6)) ->get('invoice.number_format');
移除设置
settings->unset('<group>.<key>')
与特定可配置模型
settings->unset('<group>.<key>.<table of configurable model>.<primary key>')
或
settings()->for(<configurable model>) ->unset('<group>.<key>');
示例
settings()->unset('global-settings.maintenance_scheduled_at'); settings()->unset('invoice.number_format.organizations.6'); settings()->for(\App\Models\Organization::find(6)) ->unset('invoice.number_format');
可配置模型
可配置模型是一个表示拥有自定义配置值的实例的Eloquent模型。
如何定义
模型应实现\Settings\Configurable::class
接口示例
class User extends Model implements Configurable { // ... }
注意,使用快捷方式settings()->set('<group>.<key>.<table of configurable model>.<primary key>', <value>);
,您可能会将非可配置模型存储到设置表中,然后您将无法使用settings()->for(\App\Models\Organization::find(6))
进行任何函数。
工作原理
可配置模型将被存储为设置表中的多态关系。字段列是configurable_table
和configurable_id
。默认情况下,configurable_id
具有unsigned bigint
类型,但您可以通过在运行artisan migrate
之前在AppServiceProvider
中定义静态变量\Settings\Manager::$configurableMorphType
的值(使用uuid|int|string
)来更改类型。
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// ...
\Settings\Manager::$configurableMorphType = 'uuid';
}
}
接受的值
字符串
布尔值
双精度/浮点数
整数
数组
\DatetimeInterface
- Eloquent模型
- 模型集合
- 基本集合