Symfony 4 路由注释导致 openapi 注释错误

HFi*_*nch 3 php symfony swagger openapi symfony4

目前我们的项目已经安装了 Symfony 4.3。从那时起我们已经成长,2.7所以可能会有一些遗留垃圾,但总的来说我们的应用程序运行良好。我们有一个为每条路线添加前缀的调味系统(我不知道这是否是一个好主意,但当我们开始支持它时就是这样)。所以链接看起来像这样:

test.me/{flavor}/project/{UUID}
Run Code Online (Sandbox Code Playgroud)

我们使用注释进行路由,因此有一个annotations.yaml

controllers:
    resource: ../../src/App/Controller/
    type: annotation
    prefix:   /{flavor}/
Run Code Online (Sandbox Code Playgroud)

现在,由于我们想要引入 API 文档,所以我们想要使用这个 php 包:https://github.com/zircote/swagger-php,它允许我们为 API 编写注释,就像我们使用路由一样,并生成一个swagger.json可以分发到我们的关联项目。问题是在编写注释时会弹出此错误:

$:bin/console cache:clear -e dev                                

 // Clearing the cache for the dev environment with debug true                                           


In FileLoader.php line 166:

  [Semantical Error] The annotation "@OA\Schema" in class App\Controller\Api\Model\APIMessage  
   was never imported. Did you maybe forget to add a "use" statement for this annotation? in /config/routes/../../src/Catrobat/Controller/ (which is being imported from "/config/routes/annotations.yaml"). Make sure annotations are installed  
   and enabled. 
Run Code Online (Sandbox Code Playgroud)

知道如何告诉框架忽略文件加载器中的此注释吗?swagger-php自己解析文件,因此它并不真正关心文件是否被导入。我还尝试导入 Openapi Annotations,但这也不起作用。非常感谢任何帮助!

HFi*_*nch 6

这就有些尴尬了。我最初的想法是,拥有会annotations.yaml以某种方式尝试加载注释,我是正确的。为了解决这个错误,我只需添加:

use OpenApi\Annotations as OA;
Run Code Online (Sandbox Code Playgroud)

对于使用注释的文件,它可以工作。