Symfony 6 - 带有属性注释的路由 - 如何通过变量传递路由名称?

Symfony 6 - Routes with Attribute Annoation - How to pass route name via variable?

我目前正在开发一个 symfony 6 项目,并直接在控制器内部使用路由的属性注释。

示例:

#[Route('/new', name: 'country_new', methods: ['GET', 'POST'])]

现在我想通过变量传递路线名称的一部分,例如:

private $routeName = "country"; 
#[Route('/', name: $this->routeName.'_index', methods: ['GET'])]

但是这不起作用,我收到以下错误: “编译错误:常量表达式包含无效操作”

你知道这是否可行吗?如果可行,我该如何实现?

实际上,这并不是 Symfony 特有的,而是一般 PHP 属性。根据 documentation:

Arguments to attributes can only be literal values or constant expressions

然而,由于它与 Symfony 相关,如果您只想为给定控制器中的所有路由添加前缀,您也可以在 class 本身上放置一个 Route 属性。