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)。请参阅 许可文件 获取更多信息。