Enum is cast when creating but not editing

I have the following model (simplified)
class Config extends Model
{
    protected $casts = [
     'config_type' => ConfigType::class,
    ];
}

and the following form resource
public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\Select::make('config_type')
                ->required()
                ->default(ConfigType::MAPPER)
                ->live()
                ->enum(ConfigType::class)
                ->options(ConfigType::class),
            Forms\Components\Fieldset::make()
                ->statePath('config')
                ->schema(fn (Forms\Get $get) =>
                    dd($get('config_type')) // The problem is here
        ]);
}


In the above example, when I create a new Config, the $get('config_type') call returns and ConfigType enum as expected

However, when I edit the resource, the same call returns a string (with the value of the enum) instead of an enum object as expected.

Am I doing something wrong or is this just how filament works?
Solution
it seems the issue is on your ->default()
it should be ->default(ConfigType::MAPPER->value)

you can keep the options(), it is already correct. no enum() needed.

it should be working on create and edit
Was this page helpful?