0

我有一个运行良好的 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

  • 配置部分向我展示了国际语言环境是 fr。
  • 在路由部分,我在 debug:router 命令中看不到相同的:更改为(即使我将 _locale 的要求设置为)profilter中的路由部分 {_locale}0fr|en

编辑 2:我使用的是 Symfony 4.4.8,但降级到 4.4.7 似乎可行。我也有 4.4.10 的问题

有其他探索途径的想法吗?

谢谢,

文森特

4

0 回答 0