Php 如何在Api平台上使用DTO和Messenger?

Php 如何在Api平台上使用DTO和Messenger?,php,symfony,api-platform.com,Php,Symfony,Api Platform.com,对于我们的资源之一,我们希望通过命令处理程序路由请求。为这个资源创建一个新项目有很多副作用和优先要求,所以定期休息是不够的 由于我们已经编写了一个用于应用程序不同部分的Messenger处理程序和一个简单的命令对象,因此我们考虑将Messenger与输入对象一起使用,如下所示: 将messenger属性设置为input,API平台将自动将给定的输入作为消息而不是资源发送。实际上,它将添加一个默认的DataTransformer(参见输入/输出文档),用于处理给定的输入 我的资源是这样描述的: A

对于我们的资源之一,我们希望通过命令处理程序路由请求。为这个资源创建一个新项目有很多副作用和优先要求,所以定期休息是不够的

由于我们已经编写了一个用于应用程序不同部分的Messenger处理程序和一个简单的命令对象,因此我们考虑将Messenger与输入对象一起使用,如下所示:

messenger
属性设置为
input
,API平台将自动将给定的输入作为消息而不是资源发送。实际上,它将添加一个默认的
DataTransformer
(参见输入/输出文档),用于处理给定的
输入

我的资源是这样描述的:

App\Domain\Entity\Bid:
  input: 'App\Application\Command\Lead\BidOnLead'
  messenger: "input"
  itemOperations:
    get: ~
  collectionOperations:
    get: ~
    post: ~
但是,当我加载api文档时,显示为输入的模式是
App\Domain\Entity\Bid
的模式,而不是我所期望的
App\Application\Command\Lead\BidOnLead
的模式

如果只是文档生成不正确的问题,我尝试发送一个描述输入对象的JSON(这是一个非常简单的对象,有几个属性),但是失败了,因为它试图反序列化到资源对象,而不是输入对象


我做错了什么,如何实现这一点?

我还没有测试过,但根据这里的文档:

输入
应位于
属性下
键:

App\Domain\Entity\Bid:
    attributes:
        input: 'App\Application\Command\Lead\BidOnLead'
        messenger: "input"
    itemOperations:
        get: ~
    collectionOperations:
        get: ~
        post: ~

如果您只是将注释中的内容复制到yaml,这可能会产生误导,因为在APIL平台中,yaml的文档并不完整。

Hi,您找到解决方案了吗?