如何在 NelmioApiDocBundle 4.x 的模型中注释多态变量

问题描述

我的模型如下所示:

use Symfony\Component\Serializer\Annotation\Groups;
use OpenApi\Annotations as OA;

class ResponseBodyModel extends AbstractModel
{
    /**
     * @var AbstractModel
     * @Groups({"comment_list","comment_create"})
     */
    private AbstractModel $data;
    
    public function setData( AbstractModel $data ): self
    {
        $this->data = $data;
        return $this;
    }
    public function getData(): AbstractModel
    {
        return $this->data;
    }
    //+ some other parameters
}

class CommentModel extends AbstractModel {
 //parameters for comments (ID,content,usermodel,etc.) 
 //with @Groups({"comment_create","comment_list"})
}
class CollectionModel extends AbstractModel {
     /**
      * @var CommentModel[]
      * @Groups ({"comment_list"})
      */
     private array $comments = [];
}

控制器中的代码

use OpenApi\Annotations as OA;
class DefaultController
{
    /**
     * @Route("/comment",methods={"POST"})
     * @OA\Response (
     *     response=200,*     description="Return newly added comment",*     @OA\JsonContent(
     *          ref=@Model(type=ResponseBodyModel::class,groups={"comment_create"})
     *     )
     * )
     */
    public function create()
    {
        $commentModel = new CommentModel();
        $this->responseBodyModelService->initialize($commentModel);
    }
    /**
     * @Route("/comments",methods={"GET"})
     * @OA\Response (
     *     response=200,*     description="Return list of comments",groups={"comment_list"})
     *     )
     * )
     */
    public function list()
    {
        $collectionModel = new CollectionModel();
        $collectionModel->initialize($arrayOfCommentsModels);
        $this->responseBodyModelService->initialize($collectionModel);
    }
}

在这种情况下,NelmioApiDocBundle 将生成

{
  "data": {},"status": "string"
}

因为 ResponseBodyModel::$data 上的注释是 @var AbstractModel(我知道这一点)

我如何为参数 ResponseBodyModel::$data 编写注释以根据集合组选择正确的类模型:

  • 当我设置@group comment_create - 选择 CommentModel::class
  • 当我设置@gropu comment_list - 选择 CollectionModel::class

在 NelmioApiBundle 的文档中与此无关 https://symfony.com/doc/4.x/bundles/NelmioApiDocBundle/index.html

我也没有在 https://swagger.io/specification/ 上找到任何关于此的信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)