Installation
composer require dextak/crud-generator
Publish the config file:
php artisan vendor:publish --provider="Dextak\CrudGenerator\CrudGeneratorServiceProvider" --tag="config"
Generate a Basic CRUD
Run the generator command with a model name (e.g., User):
php artisan crud:generate User
This creates:
app/Http/Controllers/UserController.php)resources/views/user/)routes/web.php)First Use Case
/user (or your configured route).config/crud-generator.php – Customize default settings (e.g., view paths, form fields).php artisan crud:generate – Check available options (--fields, --no-view, --force).vendor/dextak/crud-generator/resources/views/ – Override or extend default templates.Use the --fields option to define fields dynamically:
php artisan crud:generate Post --fields="title:text,content:textarea,published:boolean"
getFields() method in a custom generator class.text, textarea, select, checkbox, date, etc.Create a custom generator by extending Dextak\CrudGenerator\Generators\CrudGenerator:
php artisan make:generator CustomCrudGenerator
Override methods like:
generateController()generateView()generateRoute()edit.blade.php) without regenerating everything.--api flag to generate API-only controllers (e.g., php artisan crud:generate Product --api).php artisan crud:generate Article
resources/views/article/ to a custom location.@include or @stack.ArticleController with custom methods.scope() method to the generator to inject tenant IDs or filters.Overwriting Existing Files
--force carefully; it regenerates files without backup.app/Http/Controllers/ and resources/views/ before running.Namespace Conflicts
getNamespace() in a custom generator.View Template Caching
php artisan view:clear
Route Conflicts
/user).generateRoute() or manually adjust routes/web.php.Database Migrations
php artisan make:migration separately or use a package like laravel-shift/database-generator.-v for verbose output:
php artisan crud:generate User -v
vendor/dextak/crud-generator to identify issues.--no-view to skip views).Custom Field Types
Dextak\CrudGenerator\Fields\Field to add new input types (e.g., rich text editors).class RichTextField extends Field {
public function render() { ... }
}
Hooks for Post-Generation
generated:crud event to run post-processing:
// In EventServiceProvider
protected $listen = [
'generated:crud' => ['App\Listeners\PostCrudGenerate'],
];
Dynamic Route Names
getRouteName() to customize route prefixes (e.g., /admin/users).Localization Support
getViewPath().--no-view for development to skip view regeneration.config/crud-generator.php) controls:
// Custom logic added by [YourName] on [Date]
How can I help you explore Laravel packages today?