yab/crudmaker

该软件包已被弃用且不再维护。作者建议使用 grafite/crudmaker 软件包。

一个功能强大且一些人认为神奇的 Laravel CRUD 制作工具

v1.4.5 2018-09-03 18:11 UTC

README

很遗憾,我们决定弃用这个库。如果您喜欢,您可以自由地分叉并维护自己的版本。

CrudMaker - 一个功能强大且一些人认为神奇的 Laravel CRUD 制作工具

Build Status Maintainability Packagist license

它可以快速生成神奇的 CRUD 原型,并为您提供完整的测试脚本,几乎无需编辑。遵循 SOLID 原则,它可以构建基于 CLI 中提供的表名的基本组件集。CRUD 可以用于单一表实体,例如“书籍”或“作者”,但您也可以为组合实体构建 CRUD,例如父级和子级结构:“书籍_作者”。这将生成一个“书籍_作者”表,并将作者的所有组件(控制器、服务、模型等)放入 Books 命名空间,这意味着您然后可以生成“书籍_出版商”,并将所有组件作为作者的兄弟添加。现在假设您继续使用 Laracogs 开发工具包,那么您可以使用它们预构建 CRUD,这意味着它们已经被包装为仪表板内容的视图扩展,这意味着您离完成应用程序更近了一步。

作者

要求

  1. PHP 7+
  2. 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 框架重新设计你的视图。

仅服务

仅服务选项将允许你生成 CRUD,这些 CRUD 仅限于服务层和更低层,包括:服务、模型和测试(包括迁移选项)。它将跳过控制器、路由、视图等。这使你的代码更加简洁,对于网站/应用中不保持“视觉”存在的关联关系(如实体下载)来说是最优的。

带基础服务

如果你选择此选项,CrudMaker 将生成一个 BaseService,该 CRUD 的服务将从它扩展。当你想减少代码重复时,这很有用。

带外观

如果你选择外观,CRUD 将生成它们,目的是让它们用于访问服务。你需要在自己的提供者中将它们绑定到应用中,但至少会生成外观文件。

迁移

迁移选项将迁移文件添加到你的迁移目录中,使用架构构建器将填充创建表方法。架构和关系需要这个选项,因为它们期望修改生成的迁移文件。

架构

需要迁移选项

你可以使用以下结构定义表架构。字段类型应与架构构建器匹配。

--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的书籍)

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许可证

错误报告和功能请求

请尽可能详细地提供有关问题提交和功能请求的详细信息

免责声明

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是因合同、侵权或其他原因引起的,无论这些索赔、损害或其他责任是否与软件本身、使用或其他方式相关。