grafite / crudmaker
一个功能强大的CRUD制作工具,有人说它神奇,适用于Laravel
Requires
- php: >=7.0
- doctrine/dbal: ^2.5
- grafite/formmaker: ^1.1
- illuminate/support: ^5.5
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^0.9.4
- orchestra/testbench: ^3.4
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2019-08-24 22:05:38 UTC
README
不幸的是,我们已决定放弃这个库。如果您愿意,可以克隆并维护您自己的版本。
CrudMaker - 一个功能强大,有人说神奇,适用于Laravel的CRUD制作工具
它可以快速生成神奇的CRUD原型,并为您准备完整的测试脚本,需要编辑非常少。遵循SOLID原则,它可以构建一组基本组件,这些组件基于在CLI中提供的表名。CRUD可以使用单一表实体使用,例如:'books' 或 'authors',但您也可以为组合实体构建CRUDs,例如父实体和子实体结构:'books_authors'。这将生成一个 'books_authors' 表,并将作者的所有组件(控制器、服务、模型等)放入Books命名空间中,这意味着您可以然后生成 'books_publishers',并将所有组件作为作者的兄弟添加。现在假设您继续使用Laracogs启动套件,然后您可以使用它们启动构建您的CRUDs,这意味着它们已经是仪表板内容的视图扩展,这意味着您离完成您的应用程序更近一步。
作者
- Matt Lantz (@mattylantz, mattlantz at gmail dot com)
要求
- PHP 7+
- OpenSSL
兼容性和支持
Laravel版本 | 包标签 | 支持 |
---|---|---|
5.6.x | 1.4.x | 否 |
5.5.x | 1.3.x | 否 |
5.4.x | 1.2.x | 否 |
5.3.x | 1.1.x | 否 |
文档
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视图,看起来不太美观。
两者都期望有一个仪表盘父视图,这可以通过以下命令生成
artisan grafite:build bootstrap
这些命令将使用CSS框架之一重新设计您的视图。
仅服务
仅服务将允许您生成仅限于服务层的CRUDs,这包括:服务、模型和测试,并提供迁移选项。它将跳过控制器、路由、视图等。这可以使您的代码更加简洁,并且对于在网站/应用程序中不保持“视觉”存在的关联关系(例如实体下载)是最优的。
带有基础服务
如果您选择此选项,CrudMaker将生成一个BaseService,此CRUD的服务将从它扩展。当您想减少代码重复时,这可能很有用。
带有外观(Facades)
如果您选择外观,CRUD将生成它们,目的是使用它们来访问服务。您需要将它们绑定到自己的提供者中的应用程序,但至少将生成外观文件。
迁移
迁移选项将添加迁移文件到您的迁移目录中,使用模式构建器将填充创建表方法。Schema和关系需要此选项,因为它们期望修改生成的迁移文件。
Schema(模式)
需要迁移选项
您可以使用以下结构定义表模式。字段类型应与Schema构建器匹配。
--schema="id:increments,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:increments|first,user_id:integer|unsigned,name:string|nullable|after('id'),age:integer|default(0)"
您甚至可以处理一些参数,例如
--schema="id:increments|first,user_id:integer|unsigned,name:string(45)"
关系
需要迁移选项
您可以指定关系,以自动执行构建CRUD的更多步骤。您可以将关系表达式设置为如下
relation|class|column
或者像这样
hasOne|App\Author|author
这将向您的模型中添加关系,以及向您的表中添加所需的名字_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:increments,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:increments,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
单个名称示例(带有 API 的 Book)
php artisan crudmaker:new Book
--api
--migration
--schema="id:increments,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 的包装器,它将解析数据库中的表并从该表中构建 CRUD。
您必须确保名称与表名在大小写上匹配
php artisan crudmaker:table {name or snake_names}
{--api}
{--ui=bootstrap}
{--serviceOnly}
{--withFacade}
{--relationships}
许可证
CrudMaker 是开源软件,许可协议为 MIT 许可证
错误报告和功能请求
请尽可能详细地说明问题提交和功能请求
免责声明
本软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,还是包括但不限于适销性、适用于特定目的和不侵犯专利权等保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是在合同诉讼、侵权诉讼或其他诉讼中,也不论是源于、因之或与此软件的使用或其他交易有关。