如何在nelmio_api_doc中使用外部模型定义

问题描述

我试图在文档中使用共享对象,但似乎无法正常工作。

基于nelmio衰减,我执行了以下操作:

在我的Serailizer上:

/**
 * @OA\Schema(
 *     @OA\Property(property="id",type="string",example="00000000-0000-0000-0000-000000000000"),*     @OA\Property(property="email",example="admin@example.com"),*     @OA\Property(property="status",example="active"),*     @OA\Property(property="roles",type="array",items=@OA\Property(type="string"),example={"ROLE_USER","ROLE_ADMIN"}),* )
 */
class AdminUserTransformer extends TransformerAbstract
{
    public function transform(AdminUser $admin)
    {
        return [
            'id' => $admin->getId(),'email' => $admin->getEmail(),'status' => $admin->getStatus(),'roles' => $admin->getRoles(),];
    }
}

然后进入控制器:

    /**
     * @Route("/admin-user/{id}",methods={"GET"})
     *
     * @OA\Response(response="200",description="Success",@Model(type=AdminUserTransformer::class))
     *
     * @OA\Tag(name="Admin users")
     */
    public function read($id)
    {
        $admin = $this->queryBus->dispatch(new GetAdminUser($id));

        return $this->fractal->create($admin,AdminUserTransformer::class);
    }

但是我没有得到我的模型,而是得到了没有道理的错误

Property "Resources that can be included if requested." is an array,but its items type isn't specified. You can specify that by using the type `string[]` for instance or `@OA\Property(type="array",@OA\Items(type="string"))`

直接插入文档,无需参考即可正常工作:

    /**
     * @Route("/{id}",*     @OA\JsonContent(
     *         @OA\Property(property="id",*         @OA\Property(property="email",*         @OA\Property(property="status",*         @OA\Property(property="roles",*     )
     * )
     *
     * @OA\Tag(name="Admin users")
     */
    public function read($id)
    {
        $admin = $this->queryBus->dispatch(new GetAdminUser($id));

        return $this->fractal->create($admin,AdminUserTransformer::class);
    }

解决方法

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

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

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