如何为API Platform Swagger文档Bundle资源禁用文件版本控制
解决API Platform文档资源在Webpack Encore版本控制下的路径错误
方案1:通过Symfony Asset配置排除API Platform资源
编辑config/packages/framework.yaml,添加Asset包配置,对API Platform的资源路径禁用版本控制:
framework: assets: packages: api_platform_assets: version_strategy: Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy
之后在API Platform的模板中指定使用这个包即可,若不想修改模板,可结合方案2直接在模板层面跳过版本控制。
方案2:重写API Platform文档模板,强制跳过版本控制
- 复制API Platform的Swagger UI模板到项目本地目录:
cp vendor/api-platform/core/src/Bridge/Symfony/Bundle/Resources/views/SwaggerUi/index.html.twig templates/bundles/ApiPlatformBundle/SwaggerUi/index.html.twig - 打开复制后的模板,修改所有
asset()调用,添加version=false参数,示例:
对模板中所有CSS、JS资源的<!-- 原代码 --> <link rel="stylesheet" href="{{ asset('bundles/apiplatform/swagger-ui/swagger-ui.css') }}"> <!-- 修改后 --> <link rel="stylesheet" href="{{ asset('bundles/apiplatform/swagger-ui/swagger-ui.css', version=false) }}">asset()调用做同样修改,即可让这些资源路径不再被添加版本哈希。
方案3:调整Webpack Encore配置(不推荐)
API Platform的资源是通过Composer直接复制到public/bundles/api-platform的,并非Webpack Encore打包生成,因此无需让Encore处理这些文件。但该方案无法解决Symfony Asset组件自动添加版本号的问题,优先推荐前两个方案。
内容的提问来源于stack exchange,提问作者Unlimited
相关产品推荐
相关产品推荐

