shehroz/crud-generator
Composer 安装命令:
composer require shehroz/crud-generator
包简介
Laravel package to generate full CRUD (controllers, models, requests, repositories, policies, migrations, seeders, and Tailwind views) with repository pattern, role-based policies, and optional API routes.
README 文档
README
A Laravel package that generates production-ready CRUD modules for Admin Panel and API with policies, permissions, repositories, and a dynamic admin menu system.
Compatible with PHP 8.1+ and Laravel 9–12.
Features
- Admin panel CRUD (controller, views, search/filter, pagination, status, soft deletes)
- API CRUD (controller, API resources, consistent JSON responses)
- Policy and permission keys (
module.view,module.create,module.edit,module.delete) - Dynamic admin sidebar menu registration
- Repository pattern with interface binding
- Publishable stubs and config for full customization
- Nested namespaces (e.g.
admin/user)
Installation
composer require shehroz/crud-generator
Publish configuration and admin menu (recommended):
php artisan vendor:publish --tag=crud-generator-config php artisan vendor:publish --tag=crud-generator-admin-menu
Publish stubs to customize templates (optional):
php artisan vendor:publish --tag=crud-generator-stubs
Quick Start
Admin + API with policy and menu
php artisan make:crud User \
--fields="name:string,email:string:unique,phone:string:nullable" \
--admin --api --policy --menu --status --soft-delete
Admin only
php artisan make:crud admin/Category \ --fields="title:string,description:text:nullable" \ --admin --menu --icon="fas fa-tags"
API only
php artisan make:crud Product \
--fields="name:string,price:decimal,stock:integer" \
--api --policy
Command Options
| Option | Description |
|---|---|
name |
Model name (User or Admin/User) |
--fields= |
Comma-separated fields: name:type:modifiers |
--admin / --web |
Generate admin panel CRUD |
--api |
Generate API CRUD |
--both |
Generate admin + API |
--policy |
Generate policy (default: enabled) |
--no-policy |
Skip policy generation |
--menu |
Register admin menu item (default with admin) |
--no-menu |
Skip menu registration |
--soft-delete |
Enable soft deletes |
--status |
Add active/inactive status field |
--seeder |
Generate model seeder |
--searchable= |
Searchable fields (comma-separated) |
--sortable= |
Sortable fields (comma-separated) |
--icon= |
Menu icon class (Font Awesome, etc.) |
--menu-label= |
Custom menu label |
--menu-order= |
Menu sort order (default: 100) |
--menu-parent= |
Parent menu key for nested menus |
--routes |
Auto-append routes to route files |
Field format
fieldName:type:modifiers
Types: string, text, integer, boolean, decimal, date, datetime, json
Modifiers: nullable, unique
Example:
--fields="title:string,body:text:nullable,email:string:unique,published:boolean"
Generated Files
| Component | Path |
|---|---|
| Model | app/Models/[Namespace]/Model.php |
| Migration | database/migrations/*_create_*_table.php |
| Admin Controller | app/Http/Controllers/[Namespace]/ModelController.php |
| API Controller | app/Http/Controllers/Api/[Namespace]/ModelController.php |
| API Resource | app/Http/Resources/[Namespace]/ModelResource.php |
| Store/Update Requests | app/Http/Requests/[Namespace]/ |
| Repository + Interface | app/Repositories/ |
| Policy | app/Policies/[Namespace]/ModelPolicy.php |
| Views | resources/views/[namespace]/[table]/ |
| Seeder | database/seeders/ModelSeeder.php (with --seeder) |
Admin Menu System
After publishing the admin menu package:
php artisan vendor:publish --tag=crud-generator-admin-menu
Register menu items in config/admin-menu.php or at runtime:
use Shehroz\CrudGenerator\Support\AdminMenu; AdminMenu::add([ 'label' => 'Users', 'icon' => 'fas fa-users', 'route' => 'admin.users.index', 'permission' => 'users.view', 'order' => 10, ]);
Include the sidebar in your admin layout:
<x-admin-sidebar /> {{-- or --}} @include('components.admin-sidebar')
When you run make:crud with --menu, a menu entry is automatically appended to config/admin-menu.php.
Nested menus
AdminMenu::add([ 'key' => 'catalog', 'label' => 'Catalog', 'icon' => 'fas fa-box', 'order' => 20, ]); AdminMenu::add([ 'label' => 'Products', 'icon' => 'fas fa-tag', 'route' => 'admin.products.index', 'permission' => 'products.view', 'parent' => 'catalog', 'order' => 1, ]);
API Response Format
Generated API controllers return a consistent JSON structure:
{
"success": true,
"message": "Data fetched successfully",
"data": {},
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 72
}
}
Validation errors follow Laravel's standard 422 response format via Form Requests.
Permissions
Each generated module creates these permission keys:
{module}.view{module}.create{module}.edit{module}.delete
Example for User model: users.view, users.create, users.edit, users.delete
Policies are auto-registered in AuthServiceProvider when possible. Permission keys are appended to PermissionSeeder (requires spatie/laravel-permission in your host app).
Configuration
Publish and edit config/crud-generator.php:
'admin' => [ 'layout' => 'layouts.admin', 'route_prefix' => 'admin', 'route_name_prefix' => 'admin.', 'middleware' => ['web', 'auth'], ], 'api' => [ 'prefix' => 'api/v1', 'middleware' => ['api', 'auth:sanctum'], ], 'routes' => [ 'auto_append' => false, // set true or use --routes flag ],
Host App Requirements
Your Laravel application should provide:
- Admin layout —
resources/views/layouts/admin.blade.php(or changeadmin.layoutin config) - Authentication — for admin middleware and policy checks
- Spatie Permission (recommended) — for
{module}.*permission keys - API auth — Sanctum or adjust
api.middlewarein config
Architecture
make:crud (Command)
└── CrudGeneratorService
├── NameParser / FieldParser
├── StubRenderer
└── Generators
├── ModelGenerator
├── MigrationGenerator
├── RequestGenerator
├── RepositoryGenerator
├── PolicyGenerator
├── AdminControllerGenerator
├── ApiControllerGenerator
├── ApiResourceGenerator
├── ViewGenerator
├── RouteGenerator
├── MenuGenerator
└── SeederGenerator
Backward Compatibility
--webremains an alias for--admin- Existing output paths are preserved
- Stubs can be published and customized without modifying the package
License
MIT — see LICENSE.
Author
Muhammad Shehroz — LinkedIn
shehroz/crud-generator 适用场景与选型建议
shehroz/crud-generator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 30 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 05 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「admin」 「generator」 「api」 「crud」 「laravel」 「policies」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 shehroz/crud-generator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 shehroz/crud-generator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 shehroz/crud-generator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
2lenet/EasyAdminPlusBundle
Analysis module for finding problematical shop data.
A PSR-7 compatible library for making CRUD API endpoints
Phalcon Model Generator
Auto-generate dummy data with realistic relationships per Model-like config classes
统计信息
- 总下载量: 30
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-05-27