Nova field for enum in PHP 8.1 and above
You can install this package in a Laravel app that uses Nova via composer:
composer require theideabureau/laravel-nova-enum-field
use App\Enums\UserType;
use Illuminate\Database\Eloquent\Model;
class Example extends Model
{
protected $casts = [
'user_type' => UserType::class,
];
}
You can use the Enum
field in your Nova resource like this:
namespace App\Nova;
use App\Enums\UserType;
use TheIdeaBureau\EnumField\Enum;
class Example extends Resource
{
// ...
public function fields(Request $request)
{
return [
// ...
Enum::make('User Type')->attach(UserType::class),
// ...
];
}
}
If you would like to use the provided Nova Select filter (which is compatible with both the Enum
and FlaggedEnum
fields), you can include it like this:
namespace App\Nova;
use App\Enums\UserPermissions;
use App\Enums\UserType;
use TheIdeaBureau\EnumField\EnumFilter;
class Example extends Resource
{
// ...
public function filters(Request $request)
{
return [
EnumFilter::make(__('User Type'), 'user_type', UserType::class),
// With optional default value:
EnumFilter::make(__('User Type'), 'user_type', UserType::class, UserType::Administrator),
];
}
}
Alternatively, you may wish to use the provided Nova Boolean filter (which is also compatible with both the Enum
and FlaggedEnum
fields):
namespace App\Nova;
use App\Enums\UserPermissions;
use App\Enums\UserType;
use TheIdeaBureau\EnumField\EnumBooleanFilter;
class Example extends Resource
{
// ...
public function filters(Request $request)
{
return [
EnumBooleanFilter::make(__('User Type'), 'user_type', UserType::class),
// With optional default values:
EnumBooleanFilter::make(__('User Type'), 'user_type', UserType::class, [
UserType::Administrator,
UserType::Moderator,
]),
];
}
}
The MIT License (MIT). Please see License File for more information.