elsayed85 / nova-settings
基于env的Laravel Nova设置工具,使用原生的nova字段和资源
Requires
- php: >=8.0
- spatie/laravel-activitylog: ^4.4.0
This package is auto-updated.
Last update: 2024-09-14 13:26:28 UTC
README
描述
基于env的Laravel Nova设置工具,使用原生的nova字段和资源
功能
- 使用原生Nova资源
- 完全响应式
- 支持暗黑模式
- 支持所有包,如nova-tabs、activity-log等
- 根据当前环境设置不同的配置
- 将配置分离到不同的类中
- 可自定义模型和资源
要求
php: >=8.0
laravel/nova: ^4.0
安装
# Install the package
composer require stepanenko3/nova-settings
发布配置文件
php artisan vendor:publish --provider="Stepanenko3\NovaSettings\ToolServiceProvider" --tag="config"
发布迁移文件
php artisan vendor:publish --provider="Stepanenko3\NovaSettings\ToolServiceProvider" --tag="migrations"
然后运行 php artisan migrate
接下来,您必须在Nova中注册此工具。这通常在NovaServiceProvider
的tools
方法中完成。
// in app/Providers/NovaServiceProvder.php // ... public function tools() { return [ // ... new \Stepanenko3\NovaSettings\NovaSettingsTool(), ]; }
在app/Nova/Settings中创建您自己的配置类
// in app/Nova/Settings/Demo.php <?php namespace App\Nova\Settings; use Laravel\Nova\Fields\Boolean; use Stepanenko3\NovaSettings\Types\AbstractType; class Demo extends AbstractType { public function fields(): array { return [ Boolean::make('Param 1', 'param_1'), Boolean::make('Param 2', 'param_2'), Boolean::make('Param 3', 'param_3'), ]; } }
带有标签
如果您想使用eminiarts/nova-tabs
composer require eminiarts/nova-tabs
// in app/Nova/Settings/Demo.php <?php namespace App\Nova\Settings; use Eminiarts\Tabs\Tab; use Eminiarts\Tabs\Tabs; use Laravel\Nova\Fields\Boolean; use Stepanenko3\NovaSettings\Types\AbstractType; class Demo extends AbstractType { public function fields(): array { return [ Boolean::make('Param 1', 'param_1'), Boolean::make('Param 2', 'param_2'), Boolean::make('Param 3', 'param_3'), new Tabs('Tabs 1', [ new Tab('Tab 1', [ Boolean::make('Param 1', 'param_1'), Boolean::make('Param 2', 'param_2'), Boolean::make('Param 3', 'param_3'), ]), new Tab('Tab 2', [ Boolean::make('Param 1', 'param_1'), Boolean::make('Param 2', 'param_2'), Boolean::make('Param 3', 'param_3'), ]), new Tab('Tab 3', [ Boolean::make('Param 1', 'param_1'), Boolean::make('Param 2', 'param_2'), Boolean::make('Param 3', 'param_3'), ]), ]), ]; } }
在config/nova-settings.php
中声明您的设置类
<?php return [ 'model' => \Stepanenko3\NovaSettings\Models\Settings::class, 'resource' => \Stepanenko3\NovaSettings\Resources\Settings::class, 'types' => [ \App\Nova\Settings\Demo::class, // Add this line ], ];
使用方法
点击您的Nova应用中的“设置”菜单项以查看此工具。
使用辅助函数访问设置
// settings(string|null $section, string|null $key = null, string|null $default = null, string|null $env = null) settings('demo', 'key', 'defaultValue', config('app.env'))
从当前环境中的“通用”设置获取cart_link
值
settings('general', 'cart_link')
获取所有“通用”设置
settings('general')
从特定环境中的“通用”设置获取cart_link
值,并具有默认值
settings( section: 'general', key: 'cart_link', default: true, env: 'production' ); // OR settings('general', 'cart_link', true, 'production');
配置
所有配置都通过位于config/nova-settings.php
的单个配置文件进行管理
扩展默认模型
创建一个将扩展\Stepanenko3\NovaSettings\Models\Settings
的自己的模型
// in app/Models/Settings.php <?php namespace App\Models; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; class Settings extends \Stepanenko3\NovaSettings\Models\Settings { use LogsActivity; public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logFillable() ->logOnlyDirty(); } }
在config/nova-settings.php
中声明您的模型 'model' => \App\Models\Settings::class,
扩展默认Nova资源
创建一个将扩展\Stepanenko3\NovaSettings\Resources\Settings
的自己的资源
// in app/Nova/Settings.php <?php namespace App\Nova; use Illuminate\Http\Request; use Laravel\Nova\Fields\HasMany; class Settings extends \Stepanenko3\NovaSettings\Resources\Settings { public function fields(Request $request) { return array_merge(parent::fields($request), [ HasMany::make('Activities', 'activities', 'App\Nova\ActivityLog'), ]); } }
在config/nova-settings.php
中声明您的资源 'resource' => \App\Nova\Settings::class,
不要忘记创建 App\Nova\ActivityLog
屏幕截图
致谢
贡献
感谢您考虑为此包做出贡献!请创建一个带有详细变更说明的pull request。
许可证
此包是开源软件,许可协议为MIT。