bigchicchicken/api-platform-auto-group-bundle

为ApiPlatform自动定义所有实体的组

v1.0.1 2022-09-30 07:27 UTC

This package is auto-updated.

Last update: 2024-09-30 01:27:11 UTC


README

Packagist

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 许可证发布。