weslal / nova-settings-tool
一个 Laravel Nova 工具,允许用户管理由代码创建的全局设置。
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-25 10:38:59 UTC
README
这是一个 Laravel Nova 工具,允许用户管理由代码创建的全局设置。此包只能在 Laravel Nova 结合使用。
目录
安装
按照以下步骤安装 NovaSettingsTool。
安装包
使用以下命令通过 composer 安装此包
composer require weslal/nova-settings-tool
运行迁移
此包使用数据库表来存储设置值。使用以下命令运行迁移命令以在数据库中创建表
php artisan migrate
发布配置和翻译
此包附带一个包含选项和翻译的配置文件。为了更改它们,使用以下命令发布这些配置和翻译文件
php artisan vendor:publish --tag="settings"
使用
注册工具
使用 Nova 注册工具。将工具添加到 App\NovaServiceProvider 的 tools() 方法中,如下所示
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
注册到 SettingRegister 的 SettingGroup 对象集合。
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)
设置 SettingItem 的 SettingType。仅支持来自 SettingType 枚举的值。当使用 field() 方法设置 Field 时,这是可选的。
参数 string $type
SettingType 常量的值。
返回 SettingItem
当前的 SettingItem 对象($this)。
field(\Laravel\Nova\Fields\Field $field)
创建一个新的 Field 实例并将其添加到 SettingItem 中。检查在 测试字段 部分中哪些 Field 类被证明是有效的。
参数 \Laravel\Nova\Fields\Field $field
当前 SettingItem 的 Field。
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
SettingItem 的 Field。
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 初始化了 SettingRegister 或 SettingItem 不存在,则此方法返回 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 选项
测试字段
屏幕截图
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。


