我有一个运行良好的 Symfony 4 应用程序,直到我想用_locale
参数定义一个路由。
我使用以下代码为同一操作定义了两条路线:
/**
* @Route("/sites/{id}",
* name="site_get",
* methods={"GET"},
* requirements={"id": "\d+"},
* )
* @Route("/{_locale}/sites/{id}",
* name="site_get_with_locale",
* methods={"GET"},
* requirements={"id": "\d+"},
* )
*/
当我调用 url 时,/sites/1
我得到了资源,但是如果我调用/en/sites/1
,我得到一个 404 错误“找不到路由”。
这是我尝试过的事情:
- 尝试更改
/{_locale}/sites/{id}
并且/{locale}/sites/{id}
路线正在运行,但显然,语言环境没有改变。 - 试图为
_locale
参数设置要求,但没有更好 - 尝试将
{_locale}
参数设置为前缀(在 annotations.yaml 中)也没有运气 - 我可以在 debug:router 中看到路由定义:
site_get.0 GET ANY ANY /api/sites/{id}
site_get_with_locale.0 GET ANY ANY /api/{_locale}/sites/{id}
编辑 1:在给定失败请求的分析器中/en/sites/1
:
编辑 2:我使用的是 Symfony 4.4.8,但降级到 4.4.7 似乎可行。我也有 4.4.10 的问题
有其他探索途径的想法吗?
谢谢,
文森特