jeffersonsimaogoncalves / nova-enum-field
Laravel Nova字段,用于向资源添加枚举。
v2.7.0
2022-05-09 01:19 UTC
Requires
- php: ^7.3|^8.0
- bensampo/laravel-enum: ^3.1|^4.0|^5.0
- illuminate/support: ^8.0|^9.0
- laravel/nova: ^4.0
Requires (Dev)
- joshgaber/novaunit: ^2.2
- mockery/mockery: ^1.3.3
- nunomaduro/collision: ^5.2|^6.1
- orchestra/testbench: ^6.0|^7.0
- phpunit/phpunit: ^9.3.3
- symfony/var-dumper: ^5.0|^6.0
README
Laravel Nova字段,用于向资源添加枚举。此字段使用BenSampo/laravel-enum包,因此请首先查看那里的安装说明。
安装
您可以通过composer在使用Nova的Laravel应用程序中安装此包
composer require jeffersonsimaogoncalves/nova-enum-field
设置
强烈建议您在模型中使用属性转换。根据BenSampo/laravel-enum文档,可以这样操作
use App\Enums\UserType; use BenSampo\Enum\Traits\CastsEnums; use Illuminate\Database\Eloquent\Model; class Example extends Model { use CastsEnums; protected $casts = [ 'user_type' => UserType::class, ]; }
用法
您可以在Nova资源中像这样使用Enum
字段
namespace App\Nova; use App\Enums\UserType; use SimpleSquid\Nova\Fields\Enum\Enum; class Example extends Resource { // ... public function fields(Request $request) { return [ // ... Enum::make('User Type')->attach(UserType::class), // ... ]; } }
标记枚举
您可以在Nova资源中像这样使用FlaggedEnum
字段(请参阅标记/位字段枚举设置)
namespace App\Nova; use App\Enums\UserPermissions; use SimpleSquid\Nova\Fields\Enum\FlaggedEnum; class Example extends Resource { // ... public function fields(Request $request) { return [ // ... FlaggedEnum::make('User Permissions')->attach(UserPermissions::class), // ... ]; } }
过滤器
如果您想使用提供的Nova选择过滤器(与Enum
和FlaggedEnum
字段兼容),可以像这样包含它
namespace App\Nova; use App\Enums\UserPermissions; use App\Enums\UserType; use SimpleSquid\Nova\Fields\Enum\EnumFilter; class Example extends Resource { // ... public function filters(Request $request) { return [ new EnumFilter('user_type', UserType::class), new EnumFilter('user_permissions', UserPermissions::class), // With optional filter name: (new EnumFilter('user_type', UserType::class)) ->name('Type of user'), // With optional default value: (new EnumFilter('user_type', UserType::class)) ->default(UserType::Administrator), ]; } }
或者,您可能希望使用提供的Nova布尔过滤器(也兼容Enum
和FlaggedEnum
字段)
namespace App\Nova; use App\Enums\UserPermissions; use App\Enums\UserType; use SimpleSquid\Nova\Fields\Enum\EnumBooleanFilter; class Example extends Resource { // ... public function filters(Request $request) { return [ new EnumBooleanFilter('user_type', UserType::class), new EnumBooleanFilter('user_permissions', UserPermissions::class), // With optional filter name: (new EnumBooleanFilter('user_type', UserType::class)) ->name('Type of user'), // With optional default values: (new EnumBooleanFilter('user_type', UserType::class)) ->default([ UserType::Administrator, UserType::Moderator, ]), // When filtering a FlaggedEnum, it will default to filtering // by ANY flags, however you may wish to filter by ALL flags: (new EnumBooleanFilter('user_permissions', UserPermissions::class)) ->filterAllFlags(), ]; } }
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请查看我们的安全策略以了解如何报告安全漏洞。
致谢
基于spatie/skeleton-php的包结构。
关于我们
SimpleSquid是一家位于南非开普敦的小型网站开发和设计公司。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。