Api-Platform:在SF 4中使用Yaml配置而不是注释

Ben*_*Ben 5 api-platform.com symfony4

我想在Api-Platform中使用YAML而不是注释.

我没有使用Api-Platform发行版,而是将api-pack添加到我现有的Symfony Flex项目中(composer req api).

文档说YAML文件应该在,/config/api_platform/resources.yaml但我的实体没有被发现.

我应该在其他地方配置什么?

谢谢你,本

Nek*_*Nek 14

您唯一需要做的就是添加以下配置:

api_platform:
    mapping:
        paths: ['%kernel.project_dir%/config/api_platform/resources']
Run Code Online (Sandbox Code Playgroud)

我使用一个名为resourcesinside 的子文件夹将配置拆分为多个文件.以下是配置示例:

article.yaml

# /config/api_platform/resources/article.yaml
App\Domain\Article:
    attributes:
        normalization_context:
            groups: ['article_read']

    collectionOperations: []

    itemOperations:
        get:
            method: 'GET'
        put:
            method: 'PUT'
Run Code Online (Sandbox Code Playgroud)

user.yaml(配置中包含更多内容)

# This file is inside /config/api_platform/resources/user.yaml
App\Domain\User:
    attributes:
        normalization_context:
            groups: ['user_read']
        denormalization_context:
            api_allow_update: true
            groups: ['user_write', 'user_avatar_write']
        filters:
            - 'App\Application\ApiPlatform\Filters\DeletedFilter'

    collectionOperations:
        get:
            method: 'GET'
            access_control: is_granted('VIEW', object)
            normalization_context: {'groups': ['user_read_collection']}
        post:
            method: 'POST'
            access_control: is_granted('CREATE', object)
            normalization_context:
                groups: ['user_post']

    itemOperations:
        get:
            method: 'GET'
            access_control: is_granted('VIEW', object)
Run Code Online (Sandbox Code Playgroud)

  • 完美的答案。非常感谢Nek! (2认同)