squatto / grafite-crudmaker
一款极其强大,有人说神奇的Laravel CRUD生成器
Requires
- php: ^7.3|^8.0
- doctrine/dbal: ^2.9
- illuminate/support: ^8.0
- squatto/grafite-formmaker: ^1.7
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^1.0
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^8.0
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-09-15 00:38:54 UTC
README
重要:这个分支的全部目的都是为了确保与Laravel 8.x及更高版本兼容。
除确保兼容性外,将不会添加任何功能/更改或修复任何错误!
CrudMaker - 一款极其强大,有人说神奇的Laravel CRUD生成器
它可以通过为你准备完整的测试脚本快速生成神奇的CRUD原型,几乎不需要编辑。遵循SOLID原则,它可以根据CLI中提供的表名构建一组基本组件。CRUD可以用单个表实体使用,例如:“书籍”或“作者”,但你也可以为组合实体构建CRUD,例如父级和子级结构:“书籍_作者”。这将生成一个“书籍_作者”表,并将作者的所有组件(控制器、服务、模型等)放置在Books命名空间中,这意味着你可以然后生成“书籍_出版社”,并将所有组件添加为作者的兄弟。现在假设你继续使用Laracogs启动工具包,那么你可以使用它们自动构建CRUD,这意味着它们已经被包装为仪表板内容的视图扩展,这意味着你离完成你的应用程序更近了一步。
作者
- Matt Lantz (@mattylantz, mattlantz at gmail dot com) - 原始 grafite/crudmaker 包 作者
- Scott Carpenter - 当前包作者
要求
- PHP 7.3+
- OpenSSL
- Laravel 8.0+
兼容性和支持
文档
php artisan crudmaker:new {name or snake_names} {--api} {--ui=bootstrap} {--serviceOnly} {--withBaseService} {--withFacade} {--withoutViews} {--migration} {--schema} {--relationships}
配置
配置发布在 config
目录中,你可以指定命名空间、位置等。
模板
所有生成的组件都基于模板。此包中包含基本模板,但在大多数情况下,你需要根据项目的需求进行调整。如果在安装过程中已发布资产,则模板文件将位于 resources/crudmaker/crud
。
测试模板与其他模板的处理方式不同。默认情况下,提供了两个测试模板,一个是为生成的服务提供的集成测试,另一个是接受测试。然而,测试文件夹与项目的测试文件夹有一个“一对一”的映射。这意味着你可以轻松地为不同的测试级别添加测试,以匹配你的项目。例如,如果你想为生成的控制器创建单元测试,你只需创建一个新的模板文件,例如 resources/crudmaker/crud/Tests/Unit/ControllerTest.txt
。当运行CRUD生成器时,将创建以下文件: tests/unit/NameOfResourceControllerTest.php
。
API
API选项将添加一个控制器来处理API请求和响应。它还将添加API路由,假设这是v1。
yourapp.com/api/v1/books
UI
只支持一个CSS框架(Bootstrap)。如果没有指定UI选项,CrudMaker将使用纯HTML视图,这看起来不太美观。
两者都期望一个仪表板父视图,可以使用以下命令生成
php artisan grafite:build bootstrap
使用CSS框架中的任何一个来重新设计您的视图。
仅服务
仅服务将允许您生成CRUD(创建、读取、更新、删除),包括服务层、模型和测试,并提供迁移选项。它将跳过控制器、路由、视图等。这可以使您的代码更简洁,对于在网站/应用程序中不保持“视觉”存在的关联关系(如实体下载)来说是最优的。
使用基础服务
如果您选择此选项,CrudMaker将为CRUD生成一个基础服务,该CRUD的服务将扩展它。这有助于减少代码重复。
使用外观
如果您选择外观,CRUD将生成它们,目的是让它们用于访问服务。您需要在您的提供者中将它们绑定到应用程序,但至少会生成外观文件。
迁移
迁移选项将迁移文件添加到您的迁移目录中,使用模式构建器将填充创建表方法。模式和关系需要此选项,因为它们期望修改生成的迁移文件。
模式
需要迁移选项
您可以使用以下结构定义表模式。字段类型应与模式构建器匹配。
--schema="id:bigIncrements,name:string"
以下列出了可用的列类型
- bigIncrements
- increments
- bigInteger
- binary
- boolean
- char
- date
- dateTime
- decimal
- double
- enum
- float
- integer
- ipAddress
- json
- jsonb
- longText
- macAddress
- mediumInteger
- mediumText
- morphs
- smallInteger
- string
- text
- time
- tinyInteger
- timestamp
- uuid
需要进一步定义吗?
--schema="id:bigIncrements|first,user_id:integer|unsigned,name:string|nullable|after('id'),age:integer|default(0)"
您甚至可以处理一些参数,例如
--schema="id:bigIncrements|first,user_id:integer|unsigned,name:string(45)"
关系
需要迁移选项
您可以指定关系,以自动化构建CRUD的更多步骤。您可以设置关系表达式如下
relation|class|column
或者像这样
hasOne|App\Author|author
这将在您的模型中添加关系,并在您的表中添加所需的name_id字段。只需注意一件事,您不必担心。由HTML渲染器处理的通用关系包括
hasOne
hasMany
belongsTo
!!! 警告 "CRUD目前不支持 belongsToMany
,也就是说它目前不会创建关系表"
示例
以下组件将被生成
生成的文件
- 控制器
- API 控制器(可选)
- 服务
- 创建请求
- 更新请求
- 模型
- 外观(可选)
- 视图(Bootstrap、Semantic或无CSS框架)
- 测试
- 迁移(可选)
附加到以下文件
app/Http/routes.php
database/factories/ModelFactory.php
单词示例(书籍)
php artisan crudmaker:new Book
--migration
--schema="id:bigIncrements,title:string,author:string"
当使用组件的默认路径时,以下文件将被生成
app/Http/Controllers/BookController.php
app/Http/Requests/BookCreateRequest.php
app/Http/Requests/BookUpdateRequest.php
app/Models/Book/Book.php
app/Services/BookService.php
resources/views/book/create.blade.php
resources/views/book/edit.blade.php
resources/views/book/index.blade.php
resources/views/book/show.blade.php
database/migrations/create_books_table.php
tests/BookIntegrationTest.php
tests/BookServiceTest.php
蛇形名称示例(Book_Author)
php artisan crudmaker:new Book_Author
--migration
--schema="id:bigIncrements,firstname:string,lastname:string"
--withFacade
当使用组件的默认路径时,以下文件将被生成
app/Facades/Books/AuthorServiceFacade.php
app/Http/Controllers/Books/AuthorController.php
app/Http/Requests/Books/AuthorCreateRequest.php
app/Http/Requests/Books/AuthorUpdateRequest.php
app/Models/Books/Author/Author.php
app/Services/Books/AuthorService.php
resources/views/book/author/create.blade.php
resources/views/book/author/edit.blade.php
resources/views/book/author/index.blade.php
resources/views/book/author/show.blade.php
database/migrations/create_book_authors_table.php
tests/Books/AuthorIntegrationTest.php
tests/Books/AuthorServiceTest.php
单名示例(Book with API)
php artisan crudmaker:new Book
--api
--migration
--schema="id:bigIncrements,title:string,author:string"
当使用组件的默认路径时,以下文件将被生成
app/Http/Controllers/Api/BookController.php
app/Http/Controllers/BookController.php
app/Http/Requests/BookCreateRequest.php
app/Http/Requests/BookUpdateRequest.php
app/Models/Book/Book.php
app/Services/BookService.php
resources/views/book/create.blade.php
resources/views/book/edit.blade.php
resources/views/book/index.blade.php
resources/views/book/show.blade.php
database/migrations/create_books_table.php
tests/BookIntegrationTest.php
tests/BookServiceTest.php
这是使用CRUD构建器生成的示例。它已设置所有基本CRUD方法。
表格CRUD
CRUD 表是一个包装器,它将解析数据库中的表并基于该表构建 CRUD。
请确保名称与表名的大小写匹配
php artisan crudmaker:table {name or snake_names} {--api} {--ui=bootstrap} {--serviceOnly} {--withFacade} {--relationships}
许可证
CrudMaker 是开源软件,根据 MIT 许可证 许可
错误报告和功能请求
请尽可能详细地提供有关提交问题和功能请求的信息
免责声明
本软件按“原样”提供,不提供任何形式(明示或暗示)的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任承担责任,无论这些责任源于合同、侵权或其他原因,以及与软件或软件的使用或其他相关事宜。