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
相关产品推荐
相关产品推荐

