weslal/nova-settings-tool

一个 Laravel Nova 工具,允许用户管理由代码创建的全局设置。

v1.0.3 2018-12-24 21:45 UTC

This package is auto-updated.

Last update: 2024-09-25 10:38:59 UTC


README

Latest Version on Packagist Latest Stable Version Latest Unstable Version Total Downloads License Monthly Downloads Daily Downloads composer.lock

这是一个 Laravel Nova 工具,允许用户管理由代码创建的全局设置。此包只能在 Laravel Nova 结合使用。

NovaSettingsTool

目录

安装

按照以下步骤安装 NovaSettingsTool

安装包

使用以下命令通过 composer 安装此包

composer require weslal/nova-settings-tool

运行迁移

此包使用数据库表来存储设置值。使用以下命令运行迁移命令以在数据库中创建表

php artisan migrate

发布配置和翻译

此包附带一个包含选项和翻译的配置文件。为了更改它们,使用以下命令发布这些配置和翻译文件

php artisan vendor:publish --tag="settings"

使用

注册工具

使用 Nova 注册工具。将工具添加到 App\NovaServiceProvidertools() 方法中,如下所示

use WesLal\NovaSettingsTool\NovaSettingsTool;

// ...

public function tools()
{
    return [
        // ...
        new NovaSettingsTool(),
        // ...
    ];
}

创建监听器

创建一个监听器类,其中设置工具将请求分组和项目。监听器类可以放在例如 App/Handlers 中,例如命名为 SettingsRegisteringListener.php。使用 handle() 方法定义设置分组和设置项目,如下所示

use WesLal\NovaSettingsTool\Enums\SettingType;
use WesLal\NovaSettingsTool\Events\SettingsRegistering;
use WesLal\NovaSettingsTool\ValueObjects\SettingGroup;
use WesLal\NovaSettingsTool\ValueObjects\SettingItem;

// ...

class SettingsRegisteringListener
{
    // ...
    public function handle(SettingsRegistering $event)
    {
        // ...
    }
    // ...
}

注册监听器

使用 Nova 注册监听器。将包含监听器类的 SettingsRegistering 事件添加到 App\EventServiceProvider$listen 数组中,如下所示

use WesLal\NovaSettingsTool\Events\SettingsRegistering;
use App\Handlers\SettingsRegisteringListener;

// ...

protected $listen = [
    // ...
    SettingsRegistering::class => [
        SettingsRegisteringListener::class
    ]
    // ...
];

定义设置

在监听器的 handle() 方法中定义设置,或在监听 SettingsRegistering 事件的另一个监听器的该方法中定义。以下是如何定义设置的示例

public function handle(SettingsRegistering $event)
{
    $event->settingRegister
        ->group('general', function(SettingGroup $group) {
            $group->name('General')
                ->icon('fa fa-cog')
                ->item('title', function (SettingItem $item) {
                    $item->name('Website Title');
                })
                ->item('description', function (SettingItem $item) {
                    $item->type(SettingType::TEXTAREA);
                });
        })
        ->group('privacy', function(SettingGroup $group) {
            $group
                ->name('Privacy')
                ->icon('fa fa-user-secret')
                ->item('log', function (SettingItem $item) {
                    $item->name('Log User Activity')
                        ->field(Boolean::make('log')->help(
                            'When enabled, user activity will be logged.'
                        ));
                });
        });
}

对象方法

SettingRegister

group(string $key, Closure $callback = null)

创建一个新的 SettingGroup 或调用具有相同键的现有 SettingGroup,并将其添加到 SettingRegister

参数 string $key

SettingGroup 的自定义(或现有以附加到)键(通常为蛇形小写)。

参数 Closure $callback

在此方法中配置 SettingGroup 并定义项目。创建的 SettingGroup 将作为参数传递。默认值为 null。

返回 SettingRegister

当前 SettingRegister 对象(《this》)。

getGroups()

SettingRegister 获取所有已注册 SettingGroup 对象的 Collection

返回 \Illuminate\Support\Collection

注册到 SettingRegisterSettingGroup 对象集合。

getGroup(string $key)

通过键从 SettingRegister 获取 SettingGroup。如果找不到 SettingGroup,则会自动创建。

参数 string $key

SettingGroup 的键。

返回 SettingGroup

请求或新创建的 SettingGroup

SettingGroup

key(string $key)

设置 SettingGroup 的键。这是可选的,因为组从 SettingRegister 类中的 group() 方法获取键。

参数 string $key

SettingGroup 的自定义键(通常是蛇形命名)。

返回 SettingGroup

当前的 SettingGroup 对象($this)。

name(string $name)

设置 SettingGroup 的名称。

参数 string $name

SettingGroup 显示的选项卡标题。

返回 SettingGroup

当前的 SettingGroup 对象($this)。

icon(string $icon)

设置 SettingGroup 的图标。当配置文件中的 show_icons 设置为 true 时,才会显示图标。

参数 string $icon

需要在 SettingGroup 选项卡标题中显示的 FontAwesome 5 图标类(例如:fa fa-cog)。

返回 SettingGroup

当前的 SettingGroup 对象($this)。

priority(int $priority)

设置 SettingGroup 的优先级。如果未设置,则根据创建顺序对 SettingGroup 选项卡进行排序。

参数 int $priority

SettingGroup 的优先级。

返回 SettingGroup

当前的 SettingGroup 对象($this)。

item(string $key, Closure $callback = null)

创建一个新的 SettingItem 并将其添加到 SettingGroup

参数 string $key

SettingItem 的自定义键(通常是蛇形命名)。

参数 Closure $callback

配置 SettingItem 的方法。创建的 SettingItem 将作为参数传递。默认值为 null。

getItems()

SettingGroup 对象获取所有已注册的 SettingItem 对象的 Collection

返回 \Illuminate\Support\Collection

SettingGroup 注册的 SettingItem 对象的集合。

getItem(string $key)

通过键从 SettingGroup 获取 SettingItem。如果找不到 SettingItem,则自动创建。

参数 string $key

SettingItem 的键。

返回 SettingGroup

请求或新创建的 SettingItem

getKey()

SettingGroup 获取键。

返回 string

SettingGroup 的键。

getName()

SettingGroup 获取名称。

返回 string

SettingGroup 的键。

getIcon()

SettingGroup 获取图标。

返回 string

SettingGroup 的键。

getPriority()

SettingGroup 获取优先级。

返回 int

SettingGroup 的键。

hasItems()

检查 SettingGroup 是否包含一个或多个 SettingItem 对象。

返回 bool

指示 SettingGroup 是否包含任何 SettingItem 对象。

SettingItem

key(string $key)

设置 SettingItem 的键。这是可选的,因为项目从 SettingGroup 类中的 item() 方法获取键。

参数 string $key

SettingItem 的自定义键(通常是蛇形命名)。

返回 SettingItem

当前的 SettingItem 对象($this)。

name(string $name)

设置 SettingItem 的名称。

参数 string $name

SettingItem 显示的标题。

返回 SettingItem

当前的 SettingItem 对象($this)。

priority(int $priority)

设置 SettingItem 的优先级。如果未设置,则根据创建顺序对 SettingItem 行进行排序。

参数 int $priority

SettingItem 的优先级。

返回 SettingItem

当前的 SettingItem 对象($this)。

options(array $options)

将其他选项设置到 SettingItem。选项数组需要是 Key => Value 数组。请参阅 SettingItem 选项 了解支持选项。

参数 string $options

包含首选选项的 Key => Value 数组。

返回 SettingItem

当前的 SettingItem 对象($this)。

type(string $type)

设置 SettingItemSettingType。仅支持来自 SettingType 枚举的值。当使用 field() 方法设置 Field 时,这是可选的。

参数 string $type

SettingType 常量的值。

返回 SettingItem

当前的 SettingItem 对象($this)。

field(\Laravel\Nova\Fields\Field $field)

创建一个新的 Field 实例并将其添加到 SettingItem 中。检查在 测试字段 部分中哪些 Field 类被证明是有效的。

参数 \Laravel\Nova\Fields\Field $field

当前 SettingItemField

value($value)

以编程方式设置一个值。通常这应该由工具根据用户输入来处理。

参数 $value

一个 SettingItem 的值。

返回 SettingItem

当前的 SettingItem 对象($this)。

getKey()

SettingItem 获取键。

返回 string

SettingItem 的键。

getName()

SettingItem 获取名称。

返回 string

SettingItem 的键。

getPriority()

SettingItem 获取优先级。

返回 int

SettingItem 的键。

getOptions()

SettingItem 获取选项。

返回 array

SettingItem 的选项。

getType()

SettingItem 获取类型。

返回 string

SettingItem 的类型。

getField()

SettingItem 获取 Field

返回 \Laravel\Nova\Fields\Field

SettingItemField

getValue()

SettingItem 获取值。它会检查值是否已从数据库中获取,如果没有,则检查数据库。如果没有值,则返回通过 options() 方法设置的默认值。如果仍然没有值,则返回 null

返回 mixed

SettingItem 的值。

辅助方法

settings()

从 App 容器中获取 SettingRegister 实例。如果通过 ServiceProvider 初始化了 SettingRegister,则此方法返回 null。

返回 SettingRegister|null

从 App 容器中获取 SettingRegister 实例或当未初始化时返回 null

setting(string $key)

使用 SettingItem 的键从 App 容器中的 SettingRegister 获取 SettingItem 实例。如果通过 ServiceProvider 初始化了 SettingRegisterSettingItem 不存在,则此方法返回 null。

参数 string $key

SettingItem 的键。

返回 mixed

请求的 SettingItem 实例或未找到时返回 null。

settingValue(string $key)

使用 SettingItem 的键从 App 容器中的 SettingRegister 获取 SettingItem 实例的值。如果 SettingRegister 未由 ServiceProvider 初始化,SettingItem 不存在或未设置值,则此方法返回 null。

参数 string $key

SettingItem 的键。

返回 mixed

请求的 SettingItem 实例的值或未找到时返回 null。

SettingType 表示

配置选项

翻译选项

SettingItem 选项

测试字段

屏幕截图

NovaSettingsTool

NovaSettingsTool

NovaSettingsTool

许可证

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