bigchicchicken / api-platform-auto-group-bundle
为ApiPlatform自动定义所有实体的组
v1.0.1
2022-09-30 07:27 UTC
Requires
- php: >=8.1
- api-platform/core: ^3.0
- symfony/dependency-injection: ^6.1
- symfony/framework-bundle: ^6.1
- symfony/http-kernel: ^6.1
- symfony/yaml: ^6.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/phpunit-bridge: ^6.1
README
为ApiPlatform自动定义所有实体的组
安装
使用 Composer 安装 ApiPlatformAutoGroupBundle 库
composer require bigchicchicken/api-platform-auto-group-bundle
在文件 config/bundles.php 中添加/检查激活
// config/bundles.php return [ // ... ApiPlatformAutoGroupBundle\ApiPlatformAutoGroupBundle::class => ['all' => true], ];
覆盖默认的组命名策略
默认情况下,以下策略应用于所有实体
规范化组
{ShortName}:read
{ShortName}:read:{OperationName}
反规范化组
{ShortName}:write
{ShortName}:write:{OperationName}
(默认操作名称: GetCollection Post Get Put Delete Patch)
但如果你想使用自定义策略,只需像这样覆盖服务
- 创建一个扩展自
AutoGroupResourceMetadataCollectionFactory的文件。
<?php // src/ResourceMetadataCollectionFactory/CustomResourceMetadataCollectionFactory.php namespace App\ResourceMetadataCollectionFactory; use ApiPlatformAutoGroupBundle\ResourceMetadataCollectionFactory\AutoGroupResourceMetadataCollectionFactory; class CustomResourceMetadataCollectionFactory extends AutoGroupResourceMetadataCollectionFactory { /** * {@inheritDoc} */ protected function getDefaultGroups(string $shortName, bool $normalization, string $operationName): array { return [ 'my_custom_strategy' ]; } }
- 并用前一个类覆盖服务
api_platform.auto_group.resource.metadata_collection_factory
# config/services.yaml services: api_platform.auto_group.resource.metadata_collection_factory: class: App\ResourceMetadataCollectionFactory\CustomResourceMetadataCollectionFactory decorates: api_platform.metadata.resource.metadata_collection_factory arguments: - '@.inner'
许可证
这是完全免费的,并使用MIT 许可证发布。