elipzis/laravel-simple-setting

为您的 Laravel 应用提供简单的键值类型设置

v1.3.0 2024-04-22 10:09 UTC

This package is auto-updated.

Last update: 2024-09-08 02:00:31 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

创建、存储和使用

  • 键值设置,
  • 从数字到日期到数组,
  • 快速访问缓存,
  • 并自动同步到配置的磁盘作为静态 JSON 导出。

创建任何您喜欢的设置

Setting::create([
    'key'   => 'setting.example.int',
    'type'  => 'integer',
    'value' => 336,
]);

并在您的应用中的任何地方获取它

$example = Setting::getValue('setting.example.int');

或访问静态创建的例如 settings.json 导出,以减少 Web 服务器负载!

安装

您可以通过 composer 安装此包

composer require elipzis/laravel-simple-setting

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="simple-setting-config"

这是已发布配置文件的内容

    return [
        'repository' => [
            //The table name where to store the settings.
            'table' => 'settings',
            //The used cache configuration
            'cache' => [
                'prefix' => 'settings',
                'ttl'    => 3600
            ]
        ],
    
        'routing' => [
            //Should routes be available to access the settings?
            'enabled'    => true,
            //What path prefix to be used
            'prefix'     => 'setting',
            //Any middleware?
            'middleware' => [],
        ],
    
        'sync' => [
            //Where to statically sync the settings to
            'disc'     => env('FILESYSTEM_DRIVER', 'local'),
            //The filename to write to
            'filename' => 'settings.json',
            //Whether to automatically (re-)sync the settings to the disc with every change
            'auto'     => true
        ]
    ];

在您发布迁移之前,如果您想更改例如表名,请先发布配置。

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="simple-setting-migrations"
php artisan migrate

用法

创建

可以使用以下类型

Setting::create([
    'key'   => 'setting.example.int',
    'type'  => 'integer',
    'value' => 336,
]);
$now = Carbon::now();
Setting::create([
    'key'   => 'setting.example.datetime',
    'type'  => 'datetime', //or date
    'value' => $now->addWeeks(2),
]);
Setting::create([
    'key'   => 'setting.example.bool',
    'type'  => 'boolean',
    'value' => false
]);
Setting::create([
    'key'   => 'setting.example.array',
    'type'  => 'array',
    'value' => [
        'exampleA' => 'A',
        'exampleB' => 'B',
        'exampleC' => 'C',
    ]
]);
Setting::create([
    'key'   => 'setting.example.string',
    'type'  => 'string',
    'value' => '((x^0.5)/0.9)+10'
]);

检索

返回整个模型

Setting::get('test');

这将返回类似以下内容

{"test":{"id":1,"key":"test","value":"test","type":"string","created_at":"2021-12-25T10:18:07.000000Z","updated_at":"2021-12-25T10:18:07.000000Z"}}

key 为键。

如果您只需要值,请调用

Setting::getValue('test');

它只返回值,在这种情况下是 test

静态导出

设置的任何更改/创建都会自动更新一个静态导出文件,默认情况下为默认文件系统磁盘上的 settings.json。这应该可以确保通过例如您的 SPA 前端等外部访问时减少 Web 服务器负载,这样它们只需要访问例如 S3 导出的 CDN 缓存文件,而不需要每次都“猛击”Web 服务器。

命令

如果已配置,设置可以自动(重新)同步到您的磁盘以供静态访问。您可以通过调用该命令(重新)同步这些设置

php artisan setting:sync

所有设置都将导出到配置磁盘上的 JSON 文件中。

控制器

如果您启用了路由,您可以通过路由访问设置,例如 GET https://yourdomain.tld/setting/{setting} 通过键获取设置。

注意:路由仅返回值,没有 setter 端点!

测试

composer test

更改日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件