Symfony 4使用语言环境

时间:2018-07-21 09:13:57

标签: redirect routing localization symfony4

我正在尝试通过一个小型个人项目学习symfony 4。但是我对_locale有一些解决方法。

我有这样的索引路径:

# /config/route.yaml
index:
  path: /{_locale}
  controller: App\Controller\IndexController::index
  requirements:
    _locale: '%app.locales%'
  defaults:
    path: /fr

还有一个服务设置,其中包含默认语言环境和参数:

# /config/service.yaml
parameters:
    locale: fr
    app.locales: fr|en

,其中包含将translation.yml设置为default_locale的{​​{1}}文件。我正在尝试仅使用fr

fr|en

我的意思是,当我对网址# /config/package/translation.yaml framework: default_locale: fr translator: paths: - '%kernel.project_dir%/translations' fallbacks: - '%locale%' 进行硬编码时,一切正常。但是,如果未在网址中设置/fr,则不会重定向到default_locale。在这种情况下,symfony核心探查器会抛出错误:

{_locale}

也许我不太了解,但是如果设置了No route found for "GET /%7B_locale%7D",它必须作为default_locale参数的备用,不是吗?

感谢您的时间

1 个答案:

答案 0 :(得分:0)

在您的示例中,您有一条路线/{_locale},并且由于{_locale}部分的原因,必须始终在其中设置requirements。您收到错误No route found,因为Symfony不知道路由//{_locale}是相同的,并且{_locale}可能为空。您必须像这样设置新路由/并设置重定向到/fr

home:
  path: /
  controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
  defaults:
    path: /fr
    permanent: true

您可以在此处找到有关重定向的更多信息:https://symfony.com/doc/current/routing/redirect_in_config.html