mosweed / laravel-crud-generator
Automatische CRUD generator voor Laravel - genereert migrations, seeders, factories, models, controllers, views, routes en relaties
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 3
pkg:composer/mosweed/laravel-crud-generator
Requires
- php: ^8.2
- illuminate/console: ^11.0|^12.0
- illuminate/filesystem: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^9.0|^10.0
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2025-12-29 17:30:27 UTC
README
Een krachtige Laravel package van Mosweed om automatisch complete CRUD functionaliteit te genereren inclusief migrations, seeders, factories, models, controllers, views, routes en relaties.
π Features
-
Automatische generatie van:
- Migrations met foreign keys
- Eloquent Models met relaties en casts
- Controllers (Web & API)
- Form Requests met validatie
- API Resources
- Factories met Faker
- Seeders
- Blade Views (Tailwind CSS)
- Routes
-
Relatie ondersteuning:
belongsTo(N:1)hasMany(1:N)hasOne(1:1)belongsToMany(N:N met pivot tables)morphTo/morphMany(Polymorphic)
-
Flexibele configuratie:
- Interactieve modus met prompts
- YAML-gebaseerde bulk generatie
- Aanpasbare stubs
- Soft deletes standaard ingeschakeld
π¨ Thema's & Kleuren (via Tailwind CSS)
De kleuren worden beheerd via CSS variabelen, waardoor je ze eenvoudig kunt aanpassen via een CSS bestand.
Installatie CSS
# Publiceer de CSS bestanden
php artisan vendor:publish --tag=crud-generator-assets
Dit maakt de volgende bestanden aan:
resources/css/vendor/crud-generator/crud-theme.css- Kleurvariabelenresources/css/vendor/crud-generator/crud-components.css- Component classes
Toevoegen aan je app.css
/* resources/css/app.css */ @tailwind base; @tailwind components; @tailwind utilities; /* CRUD Generator styles - let op de ./ voor relatief pad */ @import './vendor/crud-generator/crud-theme.css'; @import './vendor/crud-generator/crud-components.css';
β οΈ Belangrijk: Zorg dat je eerst
php artisan vendor:publish --tag=crud-generator-assetshebt uitgevoerd!
Thema Wijzigen
Methode 1: Body class (makkelijkst)
<!-- layouts/app.blade.php --> <body class="theme-emerald"> ... </body>
Beschikbare thema's: theme-blue, theme-emerald, theme-teal, theme-cyan, theme-sky, theme-violet, theme-purple, theme-fuchsia, theme-pink, theme-rose, theme-red, theme-orange, theme-amber, theme-lime, theme-green, theme-slate, theme-zinc
Methode 2: CSS variabelen aanpassen
/* resources/css/app.css - na de imports */ :root { /* Pas de primaire kleur aan */ --crud-primary-500: #8b5cf6; /* violet */ --crud-primary-600: #7c3aed; --crud-primary-700: #6d28d9; /* Of gebruik je eigen merkkleur */ --crud-primary-600: #your-brand-color; }
Methode 3: Volledig custom thema
/* resources/css/my-theme.css */ .theme-custom { --crud-primary-50: #fef2f2; --crud-primary-100: #fee2e2; --crud-primary-200: #fecaca; --crud-primary-300: #fca5a5; --crud-primary-400: #f87171; --crud-primary-500: #ef4444; --crud-primary-600: #dc2626; /* Hoofdkleur */ --crud-primary-700: #b91c1c; /* Hover */ --crud-primary-800: #991b1b; --crud-primary-900: #7f1d1d; }
Beschikbare CSS Classes
/* Buttons */ .crud-btn-primary /* Primaire button */ .crud-btn-secondary /* Secundaire button */ .crud-btn-danger /* Delete button */ .crud-btn-danger-outline /* Delete outline button */ /* Links */ .crud-link-primary /* Primaire link */ .crud-link-info /* Info/view link */ .crud-link-warning /* Edit link */ .crud-link-danger /* Delete link */ /* Alerts */ .crud-alert-success /* Success melding */ .crud-alert-danger /* Error melding */ .crud-alert-warning /* Warning melding */ /* Forms */ .crud-input /* Text input */ .crud-textarea /* Textarea */ .crud-select /* Select dropdown */ .crud-checkbox /* Checkbox */ .crud-label /* Form label */ .crud-label-error /* Error message */ /* Badges */ .crud-badge-primary /* Primary badge */ .crud-badge-success /* Success badge */ .crud-badge-danger /* Danger badge */ .crud-badge-warning /* Warning badge */ /* Tables */ .crud-table /* Table */ .crud-table-th /* Table header */ .crud-table-td /* Table cell */ .crud-table-row /* Table row */
Voorbeeld: Verschillende Kleuren per Sectie
<!-- Admin sectie met paars thema --> <div class="theme-purple"> @include('admin.users.index') </div> <!-- Blog sectie met groen thema --> <div class="theme-emerald"> @include('blog.posts.index') </div>
π¦ Installatie
composer require mosweed/laravel-crud-generator --dev
Publiceer de configuratie (optioneel):
php artisan vendor:publish --tag=crud-generator-config
Publiceer de stubs voor aanpassing (optioneel):
php artisan vendor:publish --tag=crud-generator-stubs
π οΈ Gebruik
Basis Commando
php artisan make:crud Post
Met Velden
php artisan make:crud Post --fields="title:string,body:text,status:enum:draft:published,is_featured:boolean:nullable"
Met Relaties
php artisan make:crud Post --fields="title:string,body:text" --relations="belongsTo:User:author_id,hasMany:Comment,belongsToMany:Tag"
Interactieve Modus
php artisan make:crud Post --interactive
Dit opent een interactieve wizard waarin je:
- Velden kunt definiΓ«ren met types en modifiers
- Relaties kunt toevoegen
- Kunt kiezen welke bestanden gegenereerd worden
API Only Modus
php artisan make:crud Post --api
Genereert alleen een API controller zonder views.
Bestaande Bestanden Overschrijven
php artisan make:crud Post --force
Bulk Generatie met YAML
Maak een YAML configuratiebestand:
# crud-config.yaml models: Category: fields: name: string slug: type: string modifiers: [unique] description: type: text modifiers: [nullable] relations: - type: hasMany model: Post Post: fields: title: string body: text # Enum syntax: gebruik "enum:value1:value2:value3" status: "enum:draft:published:archived" published_at: type: datetime modifiers: [nullable] relations: - type: belongsTo model: User - type: belongsTo model: Category
β οΈ Let op bij enum types: Gebruik
"enum:value1:value2"syntax, nietmodifiers: [value1, value2]
Voer uit:
php artisan make:crud-yaml crud-config.yaml
π Veld Types
| Type | Migration | Faker |
|---|---|---|
string |
$table->string() |
fake()->sentence() |
text |
$table->text() |
fake()->paragraphs() |
integer |
$table->integer() |
fake()->numberBetween() |
bigInteger |
$table->bigInteger() |
fake()->numberBetween() |
float |
$table->float() |
fake()->randomFloat() |
decimal |
$table->decimal() |
fake()->randomFloat() |
boolean |
$table->boolean() |
fake()->boolean() |
date |
$table->date() |
fake()->date() |
datetime |
$table->dateTime() |
fake()->dateTime() |
time |
$table->time() |
fake()->time() |
json |
$table->json() |
json_encode([]) |
enum |
$table->enum() |
fake()->randomElement() |
π§ Modifiers
| Modifier | Beschrijving |
|---|---|
nullable |
Veld mag leeg zijn |
unique |
Waarde moet uniek zijn |
index |
Database index toevoegen |
unsigned |
Alleen positieve getallen |
default:value |
Standaardwaarde instellen |
Voorbeeld met Modifiers
--fields="email:string:unique,bio:text:nullable,age:integer:unsigned,status:enum:active:inactive:default:active"
π Relatie Types
belongsTo (N:1)
--relations="belongsTo:User:author_id"
Genereert:
- Foreign key column in migration
belongsTomethode in model- Factory met gerelateerd model
hasMany (1:N)
--relations="hasMany:Comment"
hasOne (1:1)
--relations="hasOne:Profile"
belongsToMany (N:N)
--relations="belongsToMany:Tag"
Genereert automatisch een pivot table migration.
morphTo / morphMany (Polymorphic)
--relations="morphMany:Comment"
βοΈ Configuratie
Na het publiceren van de config (config/crud-generator.php):
return [ // Namespace voor gegenereerde bestanden 'namespace' => 'App', // Paden 'paths' => [ 'model' => app_path('Models'), 'controller' => app_path('Http/Controllers'), // ... ], // CSS framework: 'tailwind', 'bootstrap', of 'none' 'css_framework' => 'tailwind', // Alleen API genereren (geen views) 'api_only' => false, // Soft deletes standaard inschakelen 'soft_deletes' => true, // Wat te genereren 'generate' => [ 'model' => true, 'controller' => true, 'migration' => true, 'seeder' => true, 'factory' => true, 'request' => true, 'resource' => true, 'views' => true, 'routes' => true, ], // Paginatie 'pagination' => [ 'per_page' => 15, ], ];
π¨ Stubs Aanpassen
Na het publiceren van de stubs kun je ze vinden in:
resources/stubs/vendor/crud-generator/
βββ controller.stub
βββ controller.api.stub
βββ factory.stub
βββ migration.stub
βββ migration.pivot.stub
βββ model.stub
βββ request.stub
βββ resource.stub
βββ seeder.stub
βββ views/
βββ index.stub
βββ create.stub
βββ edit.stub
βββ show.stub
βββ form.stub
π Gegenereerde Bestanden
Na php artisan make:crud Post:
app/
βββ Http/
β βββ Controllers/
β β βββ PostController.php
β βββ Requests/
β β βββ StorePostRequest.php
β β βββ UpdatePostRequest.php
β βββ Resources/
β βββ PostResource.php
βββ Models/
βββ Post.php
database/
βββ factories/
β βββ PostFactory.php
βββ migrations/
β βββ 2024_01_01_000000_create_posts_table.php
βββ seeders/
βββ PostSeeder.php
resources/views/posts/
βββ index.blade.php
βββ create.blade.php
βββ edit.blade.php
βββ show.blade.php
βββ _form.blade.php
routes/web.php (routes toegevoegd)
π Na Generatie
-
Controleer de migration:
cat database/migrations/*_create_posts_table.php -
Voer de migration uit:
php artisan migrate
-
Seed de database:
php artisan db:seed --class=PostSeeder
-
Bekijk je CRUD: Open
http://yourapp.test/postsin je browser.
π§ͺ Testen
composer test
π Voorbeeld Workflow
# 1. Maak een blog systeem php artisan make:crud Category --fields="name:string,slug:string:unique" --relations="hasMany:Post" php artisan make:crud Post --fields="title:string,slug:string:unique,content:text,status:enum:draft:published" --relations="belongsTo:Category,belongsTo:User:author_id,hasMany:Comment" php artisan make:crud Comment --fields="body:text,is_approved:boolean" --relations="belongsTo:Post,belongsTo:User" # 2. Migreer php artisan migrate # 3. Seed php artisan db:seed --class=CategorySeeder php artisan db:seed --class=PostSeeder php artisan db:seed --class=CommentSeeder # 4. Klaar!
π€ Bijdragen
Bijdragen zijn welkom! Open een issue of pull request.
π Licentie
MIT License. Zie LICENSE voor details.
π€ Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
π Changelog
Please see CHANGELOG.md for more information on what has changed recently.
π Security
If you discover any security related issues, please email info@mosweed.com instead of using the issue tracker.
π Credits
π License
The MIT License (MIT). Please see License File for more information.