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

如何在YAML路由配置中使用路由注解的EnumRequirement等效配置?

Symfony路由YAML配置中使用EnumRequirement的正确方式

你需要将PHP路由注解里的EnumRequirement约束转换为YAML配置,原PHP注解代码如下:

#[Route('/foo/{bar}', requirements: ['bar' => new EnumRequirement(SomeEnum::class)])]

在YAML路由配置中,不能直接用new关键字实例化类,正确的写法是使用Symfony支持的!php/new标签来实例化EnumRequirement,同时传递枚举类的完整命名空间作为构造参数。修改后的YAML配置如下:

foo_bar_controllers:
    resource:
        path: ../src/Controller/Foo/Bar
        namespace: App\Controller\Foo\Bar
    prefix: /{!_foobar}
    requirements:
        _foobar: !php/new Symfony\Component\Routing\Requirement\EnumRequirement
            - App\Enum\Foo\Bar # 替换为你的枚举类完整命名空间

注意事项:

  • 确保你的枚举类实现了BackedEnum接口(支持字符串或整数类型的枚举),这是EnumRequirement的要求;
  • !php/new标签需要Symfony 6.1+版本支持,和你参考的官方文档版本一致;
  • 这种配置和PHP注解中的写法完全等效,会自动生成匹配枚举所有case值的路由正则约束。

内容的提问来源于stack exchange,提问作者Thibault - Crovitche

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:04