simplesquid / nova-enum-field
Laravel Nova 字段,用于为资源添加枚举。
v3.1.0
2023-02-21 08:13 UTC
Requires
- php: ^8.0
- bensampo/laravel-enum: ^5.0 || ^6.0
- illuminate/support: ^9.0 || ^10.0
- laravel/nova: ^4.0
Requires (Dev)
- joshgaber/novaunit: ^3.1
- laravel/pint: ^1.2
- mockery/mockery: ^1.3.3
- nunomaduro/collision: ^6.1 || ^7.0
- orchestra/testbench: ^7.0 || ^8.0
- phpunit/phpunit: ^9.3.3
- symfony/var-dumper: ^6.0
README
Laravel Nova 字段,用于为资源添加枚举。此字段使用 BenSampo/laravel-enum 包,请首先查看那里的安装说明。
安装
您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包
composer require simplesquid/nova-enum-field
设置
强烈建议您在模型中使用属性转换。请参阅 BenSampo/laravel-enum 文档,这可以这样做
use App\Enums\UserType; use Illuminate\Database\Eloquent\Model; class Example extends Model { 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 Select 过滤器(它与 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)。有关更多信息,请参阅 许可文件。