Symfony 如何在YAML中定义自定义POST操作?

Symfony 如何在YAML中定义自定义POST操作?,symfony,routing,api-platform.com,Symfony,Routing,Api Platform.com,在我的项目中,我想创建一个自定义POST操作。虽然在路由中使用注释可以很好地工作,但我仍然无法使用YAML API资源定义 # src/AppBundle/Resources/config/api_resources/resources.yml AppBundle\Entity\Foo: collectionOperations: get: method: 'GET' special: route_name:

在我的项目中,我想创建一个自定义
POST
操作。虽然在路由中使用注释可以很好地工作,但我仍然无法使用YAML

API资源定义

# src/AppBundle/Resources/config/api_resources/resources.yml
AppBundle\Entity\Foo:
    collectionOperations:
        get:
            method: 'GET'
        special:
            route_name: 'foo_special'
路由

# app/config/routing.yml
foo_special:
    path: '/foo/special'
    methods:  ['POST']
    defaults:
        _api_resource_class: 'AppBundle\Entity\Foo'
        _api_collection_operation_name: 'special'
错误消息:

“hydra:说明”:“无法找到路径\/foo/special\”的控制器。路由配置错误

你知道这里怎么了吗?

引用:

如果使用ADR模式(
Action
class+
\u invoke()
方法),则必须将控制器(或此处的操作)定义为服务,然后使用服务名称作为控制器。(即
\u控制器:应用程序特殊操作
\u控制器:AppBundle\action\special

也可以使用注释,请参见

引述:

如果使用ADR模式(
Action
class+
\u invoke()
方法),则必须将控制器(或此处的操作)定义为服务,然后使用服务名称作为控制器。(即
\u控制器:应用程序特殊操作
\u控制器:AppBundle\action\special

也可以使用注释,请参见


YAML中没有自定义的POST操作。就像在ASCII或UTF-8中没有这样的操作一样。应用程序可以解释ASCII字符的含义,甚至可以组合成YAML标量。这非常有用。谢谢你的澄清!YAML中没有自定义的POST操作。就像在ASCII或UTF-8中没有这样的操作一样。应用程序可以解释ASCII字符的含义,甚至可以组合成YAML标量。这非常有用。谢谢你的澄清!感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在您的答案中添加一些解释,包括您所做的假设。稍作解释将非常有用。感谢您提供此代码片段,它可能会提供一些有限的即时帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你所做的假设。一点解释就好了。
defaults:
        _controller: 'AppBundle:Foo:special'
        _api_resource_class: 'AppBundle\Entity\Foo'
        _api_collection_operation_name: 'special'