You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 5.3 annotations.yaml配置多子目录控制器注解路由问题

问题原因

Symfony 注解路由加载器默认不会解析 resource 字段的通配符、花括号多路径匹配等 glob 语法,因此你前两种配置都无法被正确识别,只能匹配到字面路径,所以不生效。

正确配置方案

方案1:分目录单独声明(兼容性最好,适配所有 Symfony 5.x 版本)

给每个模块的 Controller 目录单独配置独立的路由资源块,保证配置项的 key 不重复即可:

# config/routes/annotations.yaml
controllers_stuff_a:
    resource: '../../src/StuffA/Controller'
    type: annotation

controllers_stuff_b:
    resource: '../../src/StuffB/Controller'
    type: annotation

后续新增其他模块的 Controller 目录时,按照相同格式新增对应配置块即可。

方案2:全局扫描+排除无关目录(适合模块较多的场景)

直接指定 src 为根扫描目录,通过 exclude 参数排除不需要扫描的业务目录,不需要每次新增模块都修改路由配置:

controllers:
    resource: '../../src/'
    type: annotation
    exclude:
        - '../../src/{DependencyInjection,Entity,Event,Repository,Service}'
        # 可根据你的项目结构按需添加其他不需要扫描路由的目录

只要你的控制器都放在对应模块的 Controller 子目录下,就可以被自动识别加载。

内容的提问来源于stack exchange,提问作者ToBe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:48:02