【问题标题】:Symfony 4 working with localeSymfony 4 使用语言环境
【发布时间】:2018-07-21 09:13:57
【问题描述】:

我正在尝试在一个小型个人项目中学习 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

将包含default_localetranslation.yml 文件设置为fr。我试图只与fr|en 合作。

# /config/package/translation.yaml
framework:
    default_locale: fr
    translator:
        paths:
            - '%kernel.project_dir%/translations'
        fallbacks:
            - '%locale%'

我的意思是,当我对 url /fr 进行硬编码时,一切正常。但是,当 url 中未设置 {_locale} 时,不会重定向到 default_locale。在这种情况下,symfony 核心分析器会抛出一个错误:

No route found for "GET /%7B_locale%7D"

也许有些东西我不太明白,但如果设置了default_locale,它必须作为_locale 参数的后备,不是吗?

感谢您的宝贵时间

【问题讨论】:

    标签: redirect routing localization symfony4


    【解决方案1】:

    在您的示例中,您有一条路线/{_locale},并且由于requirements 部分,您始终必须在那里设置{_locale}。你得到一个错误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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-20
      • 2012-12-25
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多