outl1ne / nova-settings
A Laravel Nova 工具,用于使用原生 Nova 字段编辑自定义设置。
Requires
- php: >=8.0
- laravel/nova: ^4.26
- outl1ne/nova-translations-loader: ^5.0
Requires (Dev)
- laravel/nova-dusk-suite: ^9.3-dev
- orchestra/testbench: ^7.0
- orchestra/testbench-dusk: ^7.0
- phpunit/phpunit: ^9.0
- dev-main
- 5.2.4
- 5.2.3
- 5.2.2
- 5.2.1
- 5.2.0
- 5.1.0
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.5.7
- 3.5.6
- 3.5.5
- 3.5.4
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.8
- 2.5.7
- 2.5.6
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.4.0
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-09-07 12:16:52 UTC
README
此 Laravel Nova 包允许你在代码中创建自定义设置(使用 Nova 的原生字段),并为用户提供一个用户界面,其中可以编辑设置。
要求
php: >=8.0
laravel/nova: ^4.26
特性
- 代码中的设置字段管理
- 编辑设置的 UI
- 访问设置的辅助函数
- 规则验证支持
屏幕截图
安装
通过 Composer 在 Laravel Nova 项目中安装包并运行迁移
# Install nova-settings composer require outl1ne/nova-settings # Run migrations php artisan migrate
在 NovaServiceProvider
的 tools()
方法中注册工具
// in app/Providers/NovaServiceProvider.php public function tools() { return [ // ... new \Outl1ne\NovaSettings\NovaSettings ]; }
用法
注册字段
通过调用 NovaSettings::addSettingsFields()
在 NovaServiceProvider
的 boot()
函数中定义字段。
// Using an array \Outl1ne\NovaSettings\NovaSettings::addSettingsFields([ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ]); // OR // Using a callable \Outl1ne\NovaSettings\NovaSettings::addSettingsFields(function() { return [ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ]; });
注册字段面板
// Using an array \Outl1ne\NovaSettings\NovaSettings::addSettingsFields([ Panel::make('Panel Title', [ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ]), ]);
转换
如果你想格式化设置值再返回,可以将类似于 Eloquent
的 $casts
属性的数组作为第二个参数传递。
\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([ // ... fields ], [ 'some_boolean_value' => 'boolean', 'some_float' => 'float', 'some_collection' => 'collection', // ... ]);
子页面
将设置页面名称作为第三个参数添加到自定义子页面中列出这些设置。
\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ], [], 'Subpage');
如果你留空自定义名称,字段将列出在“常规”下。
要翻译页面名称,发布翻译并将新键 novaSettings.$subpage
添加到相应的翻译文件中,其中 $subpage
是页面的名称(全部小写,短横线化)。
授权
显示/隐藏所有设置
如果你想从侧边栏中隐藏整个 Settings
区域,可以像这样授权 NovaSettings
工具
public function tools(): array { return [ NovaSettings::make()->canSee(fn () => user()->isAdmin()), ]; }
显示/隐藏特定设置字段
如果你想隐藏某些设置,可以使用 ->canSee(fn () => ...)
每个字段。如下所示
Text::make('A text field') ->canSee(fn () => user()->isAdmin()),
辅助函数
nova_get_settings($keys = null, $defaults = [])
调用 nova_get_settings()
获取所有设置为常规数组格式。此外,您还可以作为第二个参数传递一个 key => value
数组:nova_get_settings(['some_key], ['some_key' => 'default_value'])
。
nova_get_setting($key, $default = null)
要获取单个设置的值,调用 nova_get_setting('some_setting_key')
。它将返回值或 null,如果没有找到具有该键的设置。
您还可以将默认值作为第二个参数传递 nova_get_setting('some_setting_key', 'default_value')
,如果没有找到给定键的设置,则将返回该值。
nova_set_setting_value($key, $value = null)
为给定键设置设置值。
配置
可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="config"
迁移也可以使用以下命令发布和覆盖
php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="migrations"
本地化
可以使用以下命令发布翻译文件
php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="translations"
您可以将您的翻译添加到 resources/lang/vendor/nova-settings/
中,通过创建一个新的翻译文件,使用区域名称(例如 et.json
)并复制现有的 en.json
中的 JSON。
鸣谢
许可
Nova Settings 是开源软件,许可协议为 MIT 许可证。