PHP code example of ashique-ar / laravel-crud-generator

1. Go to this page and download the library: Download ashique-ar/laravel-crud-generator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ashique-ar / laravel-crud-generator example snippets




return [
    // ... other configuration sections ...
    
    'resources' => [
        'users' => [
            'model' => App\Models\User::class,
            'table' => 'users',
            'fillable' => ['name', 'email', 'phone'],
            'hidden' => ['password'],
            'rules' => [
                'store' => [
                    'name' => ''
                ]
            ],
            'search' => [
                'enabled' => true,
                'fields' => ['name', 'email'],
                'operator' => 'like'
            ],
            'sort' => [
                'enabled' => true,
                'fields' => ['name', 'email', 'created_at'],
                'default' => ['field' => 'created_at', 'direction' => 'desc']
            ],
            'filters' => [
                'enabled' => true,
                'fields' => ['status', 'role'],
                'operators' => [
                    'status' => 'exact',
                    'role' => 'in'
                ]
            ],
            'relations' => ['profile', 'roles'],
            'permissions' => [
                'enabled' => true,
                'middleware' => 'check.crud.permission'
            ],
            'soft_deletes' => true,
            'bulk_operations' => [
                'enabled' => true,
                'operations' => ['delete', 'restore', 'update']
            ],
            'api' => [
                'paginate' => true,
                'per_page' => 15,
                'max_per_page' => 100
            ],
            'middleware' => ['auth:sanctum']
        ],
        
        // Example with model in subfolder
        'user-profiles' => [
            'model' => App\Models\User\Profile::class,
            'fillable' => ['bio', 'avatar', 'social_links'],
            'rules' => [
                'store' => [
                    'bio' => 'nullable|string|max:1000',
                    'avatar' => 'nullable|image|max:2048'
                ],
                'update' => [
                    'bio' => 'sometimes|string|max:1000',
                    'avatar' => 'sometimes|image|max:2048'
                ]
            ],
            'search' => [
                'enabled' => true,
                'fields' => ['bio']
            ]
        ],
        
        // Example with full custom namespace
        'vehicle-classes' => [
            'model' => App\Models\Vehicle\VehicleClass::class,
            'table' => 'vehicle_classes',
            'fillable' => ['name', 'description', 'is_active'],
            'rules' => [
                'store' => [
                    'name' => '

use AshiqueAr\LaravelCrudGenerator\Facades\CrudGenerator;

// Register all CRUD routes with prefix and middleware
CrudGenerator::registerRoutes('api/v1', ['auth:sanctum']);

// Configuration examples for different model locations
'resources' => [
    // Simple model in App\Models
    'users' => [
        'model' => App\Models\User::class,
        // ... other config
    ],
    
    // Model in subfolder
    'profiles' => [
        'model' => App\Models\User\Profile::class,
        // ... other config
    ],
    
    // Model in admin subfolder
    'admin-users' => [
        'model' => App\Models\Admin\User::class,
        // ... other config
    ],
    
    // Model in completely different namespace
    'products' => [
        'model' => Modules\Catalog\Models\Product::class,
        // ... other config
    ]
]



namespace App\Services\Crud;

use AshiqueAr\LaravelCrudGenerator\Services\Crud\BaseCrudLogic;
use App\Models\User;

class UserLogic extends BaseCrudLogic
{
    protected string $modelClass = User::class;
    
    public function beforeCreate(array $data, Request $request): array
    {
        // Add custom logic before creating
        $data['created_by'] = auth()->id();
        return $data;
    }
    
    public function afterCreate(Model $user, Request $request): void
    {
        // Send welcome email
        Mail::to($user)->send(new WelcomeEmail($user));
    }
    
    // Override other methods as needed
}

'users' => [
    'model' => App\Models\User::class,
    'logic' => App\Services\Crud\UserLogic::class,
    'fillable' => ['name', 'email', 'created_by'],
    'rules' => [
        'store' => [
            'name' => '   ]
    ],
    // ... other configuration
]



return [
    // API defaults applied to all resources
    'api' => [
        'pagination' => [
            'enabled' => true,
            'per_page' => 15,
            'max_per_page' => 100,
        ],
        'documentation' => [
            'enabled' => true,
            'title' => 'CRUD API Documentation',
            'version' => '1.0.0',
        ],
        'response' => [
            're' => [
        // 'auth:api',
        // 'throttle:60,1',
    ],

    // Search configuration defaults
    'search' => [
        'default_operator' => 'like',
        'case_sensitive' => false,
        'operators' => [
            'like' => 'LIKE',
            'exact' => '=',
            'not_equal' => '!=',
            'greater_than' => '>',
            'less_than' => '<',
            'greater_equal' => '>=',
            'less_equal' => '<=',
            'in' => 'IN',
            'not_in' => 'NOT IN',
            'between' => 'BETWEEN',
            'starts_with' => 'LIKE',
            'ends_with' => 'LIKE',
        ],
    ],

    // Resource definitions
    'resources' => [
        // Your resources here...
    ]
];

'resource_name' => [
    // Required: The Eloquent model class
    'model' => App\Models\YourModel::class,
    
    // Optional: Database table name (auto-detected if not provided)
    'table' => 'your_table',
    
    // Optional: Custom logic class for business logic
    'logic' => App\Services\Crud\YourModelLogic::class,
    
    // Mass assignment protection - fields that can be filled
    'fillable' => ['field1', 'field2', 'field3'],
    
    // Fields to hide in API responses
    'hidden' => ['password', 'secret_key'],
    
    // Validation rules for different operations
    'rules' => [
        'store' => [
            'name' => '
    
    // Filtering configuration
    'filters' => [
        'enabled' => true,
        'fields' => ['status', 'category_id', 'is_active'],
        'operators' => [
            'status' => 'exact',
            'category_id' => 'in',
            'is_active' => 'exact'
        ]
    ],
    
    // Relationships to eager load
    'relations' => ['category', 'tags', 'author'],
    
    // Permission settings for this resource
    'permissions' => [
        'enabled' => true,
        'middleware' => 'check.crud.permission'
    ],
    
    // Soft deletes support
    'soft_deletes' => true, // Set to true if model uses SoftDeletes trait
    
    // Bulk operations configuration
    'bulk_operations' => [
        'enabled' => true,
        'operations' => ['delete', 'restore', 'update'] // Available operations
    ],
    
    // API-specific settings for this resource
    'api' => [
        'paginate' => true,
        'per_page' => 20,      // Override global default
        'max_per_page' => 50   // Override global default
    ],
    
    // Additional middleware for this resource only
    'middleware' => ['auth:sanctum', 'role:admin']
],

'rules' => [
    'update' => [
        'email' => 'ug,{{id}}'
    ]
]
bash
php artisan crud:install
bash
php artisan crud:permissions