dantinod / nova-settings-tool
一个Laravel Nova工具,允许用户管理从代码创建的全局设置。此包仅与Laravel Nova结合使用。
Requires
- php: >=7.1.0
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()
Get the key from the SettingItem.
返回 string
SettingItem 的键。
getName()
Get the name from the SettingItem.
返回 string
SettingItem 的键。
getPriority()
Get the priority from the SettingItem.
返回 int
SettingItem 的键。
getOptions()
从 SettingItem 获取选项。
返回 数组
SettingItem 的选项。
getType()
从 SettingItem 获取类型。
返回 string
SettingItem 的类型。
getField()
从 SettingItem 获取 Field。
返回 \Laravel\Nova\Fields\Field
SettingItem 的 Field。
getValue()
从 SettingItem 获取值。它会检查值是否已经从数据库获取,如果没有,则检查数据库。如果没有值,将返回通过 options() 方法设置的默认值。如果仍然没有值,将返回 null。
返回 混合类型
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 的键。
返回 混合类型
请求的 SettingItem 实例或找不到时为 null。
settingValue(string $key)
使用 SettingItem 的键从 App 容器中的 SettingRegister 获取 SettingItem 实例的值。如果ServiceProvider没有初始化 SettingRegister,SettingItem 不存在或未设置值,该方法将返回 null。
参数string $key
SettingItem 的键。
返回 混合类型
请求的 SettingItem 实例的值或找不到时为 null。
SettingType表示
配置选项
翻译选项
SettingItem 选项
测试字段
截图
许可证
MIT 许可证(MIT)。请参阅 许可文件 获取更多信息。


