Skip to content

[Feature] Enum Support #6

@devalade

Description

@devalade

Description

Add first-class support for PHP 8.1+ enums in CRUD generation.

Proposed Syntax

php artisan crudify:generate Post \
  --fields="title:string,status:enum:published,draft,archived,priority:enum:low,medium,high"

Generated Components

  • Enum Class: app/Enums/PostStatus.php
  • Migration: string or tinyInteger column
  • Model: Enum cast
  • Form Request: Rule::enum(PostStatus::class)
  • Livewire Views: <select> or radio buttons with enum values
  • Index: Colored badges per enum value

Example

// Generated Enum
enum PostStatus: string
{
    case Published = 'published';
    case Draft = 'draft';
    case Archived = 'archived';
    
    public function label(): string
    {
        return match($this) {
            self::Published => 'Published',
            self::Draft => 'Draft',
            self::Archived => 'Archived',
        };
    }
    
    public function color(): string
    {
        return match($this) {
            self::Published => 'green',
            self::Draft => 'yellow',
            self::Archived => 'gray',
        };
    }
}
// Model cast
protected $casts = [
    'status' => PostStatus::class,
];

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions