jeffersonsimaogoncalves/nova-enum-field

Laravel Nova字段,用于向资源添加枚举。

v2.7.0 2022-05-09 01:19 UTC

This package is auto-updated.

Last update: 2024-09-09 06:28:17 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status MIT License Total Downloads

Laravel Nova字段,用于向资源添加枚举。此字段使用BenSampo/laravel-enum包,因此请首先查看那里的安装说明。

Screenshot of the enum field

安装

您可以通过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选择过滤器(与EnumFlaggedEnum字段兼容),可以像这样包含它

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布尔过滤器(也兼容EnumFlaggedEnum字段)

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)。请参阅许可证文件以获取更多信息。