pkaratanev / nova-settings-tool
一个 Laravel Nova 工具,允许用户管理从代码创建的全局设置。
Requires
- php: >=7.1.0
README
一个 Laravel Nova 工具,允许用户管理从代码创建的全局设置。此包仅与 Laravel Nova 结合使用。
目录
安装
按照以下步骤安装 NovaSettingsTool
。
安装包
使用以下命令通过 composer 安装此包
composer require Pkaratanev/nova-settings-tool
运行迁移
此包使用数据库表来存储设置值。运行迁移命令以在数据库中创建表,使用以下命令
php artisan migrate
发布配置和翻译
此包附带一个包含选项和翻译的配置文件。要更改它们,请使用以下命令发布这些配置和翻译文件
php artisan vendor:publish --tag="settings"
使用方法
注册工具
通过 Nova 注册工具。将工具添加到 App\NovaServiceProvider
的 tools()
方法中,如下所示
use Pkaratanev\NovaSettingsTool\NovaSettingsTool; // ... public function tools() { return [ // ... new NovaSettingsTool(), // ... ]; }
创建监听器
创建一个监听器类,其中设置工具将请求分组和项目。监听器类可以放在例如 App/Handlers 中,例如命名为 SettingsRegisteringListener.php。使用以下示例定义设置组和设置项的 handle()
方法
use Pkaratanev\NovaSettingsTool\Enums\SettingType; use Pkaratanev\NovaSettingsTool\Events\SettingsRegistering; use Pkaratanev\NovaSettingsTool\ValueObjects\SettingGroup; use Pkaratanev\NovaSettingsTool\ValueObjects\SettingItem; // ... class SettingsRegisteringListener { // ... public function handle(SettingsRegistering $event) { // ... } // ... }
注册监听器
通过 Nova 注册监听器。将包含监听器类的 SettingsRegistering
事件添加到 App\EventServiceProvider
的 $listen
数组中,如下所示
use Pkaratanev\NovaSettingsTool\Events\SettingsRegistering; use App\Handlers\SettingsRegisteringListener; // ... protected $listen = [ // ... SettingsRegistering::class => [ SettingsRegisteringListener::class ] // ... ];
创建更新值监听器
创建一个监听器类,您可以监视更新值,并在它们更改时执行某些操作
use Pkaratanev\NovaSettingsTool\Events\SettingsUpdated; // ... class SettingsRegisteringListener { // ... public function handle(SettingsUpdated $event) { // ... } // ... }
注册更新监听器
use Pkaratanev\NovaSettingsTool\Events\SettingsUpdated; use App\Handlers\SettingsUpdatedListener; // ... protected $listen = [ // ... SettingsUpdated::class => [ SettingsUpdatedListener::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
实例的值。如果ServiceProvider未初始化 SettingRegister、SettingItem
不存在或未设置值,则此方法返回 null。
参数 string $key
SettingItem
的键。
返回 mixed
请求的 SettingItem
实例的值或找不到时为 null。
SettingType
表示
配置选项
翻译选项
SettingItem
选项
测试字段
截图
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。