bonk007/system-settings

应用动态设置

v1.0.0 2024-06-14 08:35 UTC

This package is auto-updated.

Last update: 2024-09-14 09:08:16 UTC


README

Packagist Downloads GitHub License Packagist Stars GitHub forks

  1. 安装
  2. 如何使用
  3. 可配置模型
  4. 接受的值

安装

使用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_tableconfigurable_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模型
  • 模型集合
  • 基本集合