dkvhin / nova-settings
一个用于使用原生Nova字段编辑自定义设置的Laravel Nova工具。这是从optimistdigital/nova-settings分支出来的
资助包维护!
optimistdigital
Requires
- php: >=7.2.0
- anlutro/l4-settings: ^1.0
- laravel/nova: ^3.0
- optimistdigital/nova-translations-loader: ^3.0
Requires (Dev)
- laravel/nova-dusk-suite: 7.x-dev|dev-master
- orchestra/testbench: ^5.0|^6.0
- orchestra/testbench-dusk: ^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
README
注意!这是从https://github.com/optimistdigital/nova-settings分支出来的
我已经修改了它,使其成为基于用户的设置,而不是全局设置
这个Laravel Nova包允许您在代码中创建自定义设置(使用Nova的本地字段),并为用户创建一个可以编辑设置的UI。
要求
php: >=7.2
laravel/nova: ^3.0
功能
- 代码中设置字段管理
- 编辑设置的UI
- 访问设置的辅助函数
- 规则验证支持
- 支持eminiarts/nova-tabs
- 支持带有规则验证的nova-translatable
截图
安装
通过Composer在Laravel Nova项目中安装此包并运行迁移
# Install nova-settings composer require dkvhin/nova-settings # Publish Config php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="config" # Publish Migrations php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="migrations" # Run migrations php artisan migrate
在Nova的tools()
方法中注册工具
// in app/Providers/NovaServiceProvider.php public function tools() { return [ // ... new \OptimistDigital\NovaSettings\NovaSettings ]; }
用法
注册字段
通过调用NovaSettings::setSettingsFields()
在NovaServiceProvider
的boot()
函数中定义字段。
// Using an array \OptimistDigital\NovaSettings\NovaSettings::addSettingsFields([ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ]); // OR // Using a callable \OptimistDigital\NovaSettings\NovaSettings::addSettingsFields(function() { return [ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ]; });
类型转换
如果您想格式化设置值然后再返回,请传递一个类似于Eloquent的$casts
属性数组的第二个参数。
\OptimistDigital\NovaSettings\NovaSettings::addSettingsFields([ // ... fields ], [ 'some_boolean_value' => 'boolean', 'some_float' => 'float', 'some_collection' => 'collection', // ... ]);
子页面
将设置页面名称作为第三个参数添加,以在自定义子页面中列出这些设置。
\OptimistDigital\NovaSettings\NovaSettings::addSettingsFields([ Text::make('Some setting', 'some_setting'), Number::make('A number', 'a_number'), ], [], 'Subpage');
如果您留空自定义名称,字段将列在“常规”下。
要翻译页面名称,发布翻译并添加一个新的键novaSettings.$subpage
到相应的翻译文件中,其中$subpage
是页面的名称(全部小写,slugified)。
授权
显示/隐藏所有设置
如果您想从侧边栏中隐藏整个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)
通过调用nova_get_settings()
获取所有设置为常规数组格式。如果传入$keys
数组,则只返回列出的键。
nova_get_setting($key, $default = null)
要获取单个设置值,调用nova_get_setting('some_setting_key')
。它将返回值或null(如果找不到具有该键的设置)。
您还可以传递默认值作为第二个参数nova_get_setting('some_setting_key', 'default_value')
,如果未找到具有给定键的设置,则返回该默认值。
配置
可以使用以下命令发布配置文件
php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="config"
迁移也可以使用以下命令发布和覆盖
php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="migrations"
本地化
可以使用以下命令发布翻译文件
php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="translations"
您可以将您的翻译添加到resources/lang/vendor/nova-settings/
,通过创建一个带有区域名称的新翻译文件(例如et.json
)并从现有的en.json
复制JSON。
致谢
许可
Nova Settings是开源软件,许可协议为MIT许可证。