pwweb/artomator

PWWEB Artomator

v1.1.0 2022-04-10 13:36 UTC

README

Latest Stable Version Total Downloads License Scrutinizer code quality (GitHub/Bitbucket) StyleCI Status

Artomator:简化生活的自定义命令。扩展 InfyOmLabs/laravel-generator 包以包括 GraphQL 并扩展文档块。

安装

通过 Composer 运行以下命令

$ composer require pwweb/artomator --dev

为了简化安装,可以运行以下命令

$ php artisan artomator:install

这将引导您完成设置的各种步骤。您将被问到的问题

1. 选择您的模板包:[CoreUI / AdminLTE]?这将根据您的选择安装基于模板的 laravel-generator 包。请参阅AdminLTECoreUI

2. 您想安装 Laravel Jetstea (Inertia & Vue) 吗?如果您选择是,这将安装 Laravel Jetstream。它将使用 Inertia 栈。

2a. 您想支持 Laravel Jetstream Teams 吗?如果您想支持 Teams 功能,请回答 YES,安装将包括支持。否则,将不会安装 Teams 功能。

3. 您想发布存根文件吗?如果您想能够覆盖模板文件以满足您的需求,则回答 YES,这些文件将发布到资源文件夹。如果您想在安装后执行此操作,可以始终运行 php artisan artomator.publish:templates

备用安装(手动)

或者,您可以执行以下操作,这是 install 命令所做的操作

$ php artisan vendor:publish --tag=artomator
$ php artisan vendor:publish --provider="InfyOm\Generator\InfyOmGeneratorServiceProvider"
$ php artisan vendor:publish --tag=lighthouse-schema
$ php artisan vendor:publish --tag=lighthouse-config
$ php artisan artomator:publish

这将发布必要包的配置文件以及运行 GraphQL 服务器所需的 graphql.schema 文件以及以下文件

├── app
│   ├── Http
│   |   └── Controllers
│   │       └── AppBaseController.php
│   └── Repositories
|       └── BaseRepository.php
└── Tests
    ├── ApiTestTrait.php
    ├── Traits
    ├── APIs
    └── Repositories

将以下别名添加到 config/app.php 中的别名数组中

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

推荐:如果您有一个全新的 Laravel 应用程序并且想要一个基本的仪表盘布局,那么您应该考虑设置 Laravel Jetstream。您可以在这里找到安装说明。

默认情况下,infyomlabs\laravel-generator 使用 infyomlabs\adminlte-templates 模板。如果您想使用 coreui 模板,则更新配置文件 config/inyom/laravel-generator.php 中的 Templates 部分,如下所示

<?php
return [
    ...

    /*
    |--------------------------------------------------------------------------
    | Templates
    |--------------------------------------------------------------------------
    |
    */

    'templates'         => 'coreui-templates',
    ...
];

您需要将适当的包添加到您的 composer 中

$ composer require infyomlabs/coreui-templates

$ composer require infyomlabs/adminlte-templates

建议您在继续之前现在就更改此配置设置,因为接下来的命令将使用生成视图文件时定义的任何模板。

最后,您应该运行以下命令以发布 Artomator 所使用的存根文件,这样您就可以根据您的设置进行配置

$ php artisan artomator.publish:templates

InfyoLabs 文档

由于这是一个对 InfyOmLabs/laravel-generator 包的扩展,强烈建议您熟悉他们的 文档。在审查这些时,请记住,所有以 $ php artisan infyom 开头的命令都应该替换为 $php artisan artomator,如果您想利用此包的附加功能。

用法

VueJS 支持

运行基于 *scaffold 的命令(见命令),你可以使用以下附加标志来使用VueJS模板生成视图。

$php artisan artomator.scaffold [...] --vue

这将遵循与 viewsGenerator 相同的附加开关,即 --skip=views 将跳过VueJS视图的生成。

命令

由于这是 InfyOmLabs/laravel-generator 包的扩展,基本包的文档可以在此处找到。

基本包中的所有命令都已“扩展”,因此每个都有一个 artomator 版本。请参考原始文档了解如何使用这些命令。

$ php artisan artomator:publish
$ php artisan artomator:api <MODEL_NAME>
$ php artisan artomator:scaffold <MODEL_NAME>
$ php artisan artomator:api_scaffold <MODEL_NAME>
$ php artisan artomator.publish:layout
$ php artisan artomator.publish:templates
$ php artisan artomator:migration <MODEL_NAME>
$ php artisan artomator:model <MODEL_NAME>
$ php artisan artomator:repository <MODEL_NAME>
$ php artisan artomator.api:controller <MODEL_NAME>
$ php artisan artomator.api:requests <MODEL_NAME>
$ php artisan artomator.api:tests <MODEL_NAME>
$ php artisan artomator.scaffold:controller <MODEL_NAME>
$ php artisan artomator.scaffold:requests <MODEL_NAME>
$ php artisan artomator.scaffold:views <MODEL_NAME>
$ php artisan artomator:rollback <MODEL_NAME>
$ php artisan artomator.publish:user

除了基本包的命令外,还有以下命令

$ php artisan artomator:graphql_scaffold <MODEL_NAME>
$ php artisan artomator:graphql <MODEL_NAME>
$ php artisan artomator.graphql:mutations <MODEL_NAME>
$ php artisan artomator.graphql.query <MODEL_NAME>
$ php artisan artomator.graphql:type <MODEL_NAME>

对于GraphQL命令,你还可以提供一个附加开关 --gqlName=AlternativeGraphqlName,这将允许你自定义GraphQL引擎使用的名称。如果省略此选项,则使用模型名称。

artomator.publish:templates

要修改包提供的占位符文件,你可以从命令行发布它们

$ php artisan artomator.publish:templates

此命令将运行InfyOmLabs等效的发布命令,然后使用Artomator包中的那些文件覆盖。因此,您将需要确认文件覆盖,键入yes以确认。

这将把占位符文件放入 .\resources\infyom\infyom-generator-templates 文件夹。这些可以编辑,当运行命令时,将使用这些模板。

artomator.graphql_scaffold <模型名称>

此功能遵循与 php artisan infyom:api_scaffold <模型名称> 功能相同的原理,但生成GraphQL文件而不是API文件,以及laravel scaffold文件。

artomator:graphql <模型名称>

此功能遵循与 php artisan infyom:api <模型名称> 功能相同的原理,但生成GraphQL文件而不是API文件。

artomator.graphql:mutations <模型名称>

此功能仅生成GraphQL Mutations文件。

artomator.graphql:query <模型名称>

此功能仅生成GraphQL Query文件。

artomator.graphql:type <模型名称>

此功能仅生成GraphQL Type文件。

自定义路由

如果您想定义自定义路由,这些路由在添加新模型时将持久化并重新生成,现在可以在json文件 web.json 中添加一个 custom 属性。

"custom": [
    {
        "method": "post",
        "endpoint": "/print/{id}",
        "controller": "App\\Http\\Controllers\\Gran\\Parent\\PrintingController",
        "as": "PrintingController",
        "function": "printer",
        "name": "customprint"
    }
],
"group": {...}

确保这与 group 属性保持一致。

上述操作将添加以下路由

<?php
Route::post(
    '/print/{id}',
    [PrintingController::class, 'printer']
)->name('customprint');

如果您留空该函数,它将删除回调中的 @printer 部分。

路由通用

以下是对 web.json 文件的示例输出。您可以自由添加 "fallback" 选项,并更改资源控制器的 "only" "controller""as" 选项。

{
  "Gran": {
    "prefix": "gran",
    "name": "gran",
    "fallback": "gran.parent.somethings.index",
    "group": {
      "Parent": {
        "prefix": "parent",
        "name": "parent",
        "resources": {
          "Something": {
            "only": "index,create,store",
            "controller": "App\\Http\\Controllers\\Gran\\Parent\\SomethingController",
            "as": "WeirdnameController"
          }
        }
      }
    }
  }
}
  • "fallback" - 这是您想要用作组级别回退的路由名称。这将附加到组的末尾,在其他所有资源和组生成之后。
  • "only" - 您想要限制的路线的逗号分隔列表。
  • "controller" - 这是路由的控制器完整命名空间路径。如果您更新此路径,它将在 web.php 文件的 use 调用中设置在顶部。
  • "as" - 这允许您覆盖控制器使用的名称。默认为控制器名称,但如果发生冲突,则允许您覆盖它。

!! 警告 !! 这些附加字段与先前版本不兼容。请手动更新JSON文件以包含缺失的字段。

安全

如果您发现任何安全相关的问题,请通过电子邮件发送到 security@pw-websolutions.com,而不是使用问题跟踪器。

致谢

许可证

版权所有 © pw-websolutions.com。有关更多信息,请参阅许可证文件