kevindh89 / hackathon-plugin-bundle
Conxillium黑客松期间创建的通用网关插件
Requires
- php: >=7.4
- commongateway/corebundle: ^1.0.51
Requires (Dev)
- symfony/dependency-injection: ~3.4|~4.1|~5.0
This package is auto-updated.
Last update: 2024-09-26 16:28:48 UTC
README
此存储库用于创建PHP Symfony flex扩展包。通用网关生态系统使用此模板进行快速开发,以扩展核心之外的网关功能。
第一部分是关于安装插件的内容。后部分是关于扩展通用网关功能的自定义插件。
使用通用网关管理用户界面安装
一旦正确设置了一个包(如这个存储库),通用网关可以无需额外配置就发现该包。转到“插件”选项卡以搜索、选择和安装插件。
使用PHP命令安装
要执行以下命令,您需要 Composer 或一个已经安装了PHP和Composer的docker化安装。
终端和根目录下的Composer方法
用于安装插件
$composer require kevindh89/hackathon-plugin-bundle:dev-main
用于安装模式
`$php bin/console commongateway:install kevindh89/hackathon-plugin-bundle
终端和根目录下的docker化方法
用于安装插件
$docker-compose exec php composer require kevindh89/hackathon-plugin-bundle:dev-main
用于安装模式
$docker-compose exec php bin/console commongateway:install kevindh89/hackathon-plugin-bundle
创建您的包
本节是为希望构建插件以扩展通用网关功能而不增加核心代码库的开发者而设计的。
以下知识假设已安装
Composer Packagist Docker Schema.json 对通用网关的基本了解
使用此模板
此模板用于快速Symfony扩展包开发,并旨在作为基于自定义插件的模型。按照以下步骤,在45分钟或更短时间内创建您的插件
-
在 GitHub 上登录
-
使用 此模板
-
命名您的包(驼峰式)。包需要以
Bundle
结尾,符合Symfony 命名规范。 -
点击绿色按钮
从模板创建存储库
-
更新文件名和命名空间以匹配您的需求
- 打开composer.json,将其更改为您的合适名称。第一个词应该是命名空间,第二个是包名。
注意:这是短横线命名法。也请阅读:命名您的包
- 检查自动加载字段是否已正确设置。
- 打开HackathonPluginBundle.php并更改Bundle的
name
和namespace
。命名空间应与composer.json
中的包名相同,但为驼峰式。因此,kevindh89/hackathon-plugin-bundle
变为CommonGateway/HackathonPluginBundle
- 相应地重命名
/Service
和/ActionHandler
(如果未使用,则删除)。 - 将
/DependencyInjection/HackathonPluginExtension.php
重命名为您的BundleNameExtension.php
- 重命名
/Resources/config/services.yaml
命名空间
添加模式
您可以将 json 模式 作为实体从您的 /Schema
文件夹加载到通用网关,并使用基于您的模式的对象。
您可以添加现有的模式或创建自己的模式并将它们添加到 /Schema
文件夹中。这里有一个示例,在 /Schema/example.json
中展示。
以下属性是必需的,没有它们,网关无法识别模式为有效
- `version` can start on '0.1.0.'
没有此属性,您无法更新方案
- `$schema` (https://docs.commongateway.nl/schemas/Entity.schema.json)
- `$id` (https://example.com/schema/{Your scheme name}.schema.json)
唯一的
$id
以便与其他模式相关联。
- `type` must be 'object'
- `properties` must be schema properties
一旦您将模式添加到仓库,您也可以为这些模式添加对象/数据。示例在 /Data
文件夹中。