gabrieljaime/laravel-api-generator-gj

Laravel API/Scaffold/CRUD 生成器,只需一条命令即可生成控制器、仓库、模型、迁移文件和更新 routes.php。

dev-master 2016-02-08 22:52 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:59:03 UTC


README

我喜欢创建 API,我也参与了许多需要它们的工程项目。但问题总是在于设置所有样板代码。例如,每个端点都需要迁移、模型、控制器、仓库等等。我想要一个可以简化这一过程的方法,于是这个包就这样诞生了。

这个 API 生成器允许你使用 artisan 命令自动生成所有这些文件,节省你的时间。它不仅会自动生成文件,还会设置命名空间。

Artisan 命令可以生成以下项目

  • 迁移文件
  • 模型
  • 仓库
  • 控制器
  • 视图
    • index.blade.php
    • table.blade.php
    • show.blade.php
    • show_fields.blade.php
    • create.blade.php
    • edit.blade.php
    • fields.blade.php
  • 调整 routes.php

这样,你的简单 CRUD 和 API 就在几秒钟内准备好了。

文档正在制作中...

文档

  1. 安装
  2. 配置
  3. 发布 & 初始化
  4. 生成器
  5. 支持的字段类型
  6. 自定义
    1. 基础控制器
    2. 自定义模板
    3. Dingo API 集成
  7. 选项
    1. 分页记录
    2. 模型软删除
    3. 从文件中获取字段
    4. 自定义表名
    5. 跳过迁移
    6. 记住令牌
  8. 从现有表中生成生成器

安装

  1. 将此包添加到你的 composer.json 中

     "repositories": [
         {
             "type": "git",
             "url": "https://github.com/mitulgolakiya/laracast-flash"
         }
     ],
     "require": {
         "laracasts/flash": "dev-master",
         "laravelcollective/html": "5.1.*@dev",
         "bosnadev/repositories": "dev-master",
         "gabrieljaime/laravel-api-generator-gj": "dev-master"
     }
    
  2. 运行 composer update

     composer update
    
  3. 将服务提供者添加到 config/app.php 中的 providers 数组。
    因为我们使用这两个包 laravelcollective/html & laracasts/flash 作为依赖。
    所以我们也需要添加这些服务提供者。

     Collective\Html\HtmlServiceProvider::class,
     Laracasts\Flash\FlashServiceProvider::class,
     Gabo\Generator\GeneratorServiceProvider::class,
    

    为了方便,还可以在 config/app.php 中的别名数组中添加这些外观。

     'Form'      => Collective\Html\FormFacade::class,
     'Html'      => Collective\Html\HtmlFacade::class,
     'Flash'     => Laracasts\Flash\Flash::class
    

配置

发布配置文件 generator.php

    php artisan vendor:publish --provider="Gabo\Generator\GeneratorServiceProvider"

配置文件 (config/generator.php) 包含所有生成文件的路径

base_controller - 所有控制器的基类控制器

path_migration - 生成迁移文件的路径
path_model - 生成模型文件的路径
path_repository - 生成仓库文件的路径
path_controller - 生成控制器文件的路径
path_api_controller - 生成 API 控制器文件的路径
path_views - 创建视图的路径
path_request - 创建请求文件的路径
path_routes - routes.php 的路径(如果你使用任何自定义路由文件)
path_api_routes - api_routes.php 的路径(此文件将包含所有 API 路由)

namespace_model - 模型的命名空间
namespace_repository - 仓库的命名空间
namespace_controller - 控制器的命名空间
namespace_api_controller - API 控制器的命名空间
namespace_request - 请求的命名空间

model_extend_class - 模型的扩展类

api_prefix - API 前缀 api_version - API 版本

use_dingo_api - 使用 dingo/api 包集成 API

发布 & 初始化

主要,我们需要做三件基本的事情来开始。

  1. 发布一些常见的视图,如 errors.blade.php & paginate.blade.php

  2. 发布 api_routes.php,其中将包含所有我们的API路由。

  3. 初始化API路由的routes.php。我们需要将api_routes.php包含到主routes.php中。

     php artisan gabo.generator:publish
    

生成器

运行 artisan 命令以生成API,Scaffold带有CRUD视图或同时带有API和CRUD视图。

生成API

    php artisan gabo.generator:api ModelName

生成CRUD Scaffold

    php artisan gabo.generator:scaffold ModelName

生成带有API的CRUD Scaffold

    php artisan gabo.generator:scaffold_api ModelName

例如:

php artisan gabo.generator:api Project
php artisan gabo.generator:api Post

php artisan gabo.generator:scaffold Project
php artisan gabo.generator:scaffold Post

php artisan gabo.generator:scaffold_api Project
php artisan gabo.generator:scaffold_api Post

支持的HTML字段类型

以下是支持的字段类型及其选项列表

  • 文本
  • 多行文本
  • 密码
  • 电子邮件
  • 文件
  • 复选框
  • 单选框:male,female,option3,option4
  • 数字
  • 日期
  • 选择:India,USA

自定义

基础控制器

如果您想使用自己的基础控制器或想要扩展/修改默认的AppBaseController,则可以有以下选项

  1. 如果您想使用另一个控制器(推荐扩展AppBaseController为新控制器)作为基础控制器,请修改config/generator.php中的base_controller

  2. 如果您想修改AppBaseController,则:

    1. 在您的控制器路径中发布AppBaseController

      php artisan gabo.generator:publish --baseController

    2. 修改AppBaseController.php的内容,并将其设置为config/generator.php中的base_controller

自定义模板

要使用自己的自定义模板,

  1. 将模板发布到/resources/api-generator-templates

     php artisan gabo.generator:publish --templates
    
  2. 只留下您想要更改的模板。删除您不打算更改的模板。

选项

分页记录

要分页记录,您可以指定分页选项,例如

    php artisan gabo.generator:api Post --paginate=10

模型软删除

要使用软删除,使用softDelete选项,

    php artisan gabo.generator:api Post --softDelete

从文件中获取字段

如果您想从文件传递字段,则可以创建字段json文件,并通过命令行传递它。以下是一个示例 fields.json

您必须在命令中传递选项 --fieldsFile=绝对文件路径或从基本目录的路径。例如:

     php artisan gabo.generator:scaffold_api Post --fieldsFile="/Users/Gabo/laravel-api-generator-for-lteTemplate/fields.json"
     php artisan gabo.generator:scaffold_api Post --fieldsFile="fields.json"

自定义表名

您也可以指定自己的自定义表名,

    php artisan gabo.generator:api Post --tableName=custom_table_name

跳过迁移

您也可以跳过迁移生成,

    php artisan gabo.generator:api Post --skipMigration

记住令牌

要在迁移文件中生成rememberToken字段,

    php artisan gabo.generator:api Post --rememberToken

从现有表中生成生成器

要使用现有表与生成器一起使用,您可以指定--fromTable选项。--tableName选项是必需的,您需要指定表名。

请确保您已安装doctrine/dbal包。

限制: 目前它尚未完全工作(工作正在进行中)。它不会创建迁移文件。您需要调整生成文件中的一些内容,如时间戳、主键等。

    php artisan gabo.generator:api Post --fromTable --tableName=posts

致谢

此API生成器受到Mitul Golakiya的启发。并由Gabriel Jaime修改,以适应https://github.com/gabrieljaime/laravel-admin-master中的环境。

欢迎提交错误和分叉:)