【问题标题】:Locale in Routing, Default Language also without Parameter路由中的区域设置,默认语言也没有参数
【发布时间】:2012-01-16 16:02:13
【问题描述】:

我想在 Symfony2 安装上通过 url 定义页面语言。我的路由通过控制器内的注释工作。

routing.yml

_index:
    resource: "@MyMainBundle/Controller/SiteController.php"
    type:     annotation

siteController.php

/**
 * @Route( "/{_locale}/{site}", name="_site_site", defaults={"_locale" = "en"}, requirements={"site" = "about|cities|download|blog", "_locale" = "en|de|fr|es"} )
 */

这很好用,但我想要的是以下网址调用相同的操作。

http://example.com/download
http://example.com/en/download
http://example.com/de/download

没有语言参数,页面应该切换回默认语言,但这是我可以在我的操作中处理的。

我找到了这个答案,但根本无法让它工作。 Symfony2 default locale in routing

【问题讨论】:

    标签: annotations symfony


    【解决方案1】:

    只需添加另一个不包含语言环境的 @Route 注释即可。

    /**
     * @Route("/{_locale}/{site}/")
     * @Route("/{site}/")
     */
    

    【讨论】:

    • 谢谢!我只需要添加'defaults={"_locale"="en"}',否则会导致错误,如果在 url 中找不到语言环境。
    • 你可以在 routing.yml 中添加 locale 在 type="annotation" 要求之后:_locale: en|fr
    【解决方案2】:

    这也适用于 annotations.yaml

    frontend_controllers:
        resource: ../../src/Controller/Frontend
        type: annotation
        prefix:
            - /
            - /{_locale}
        defaults:
            _locale: 'en'
    

    【讨论】:

      【解决方案3】:

      另外,如果你有一个 api 前缀,你可以使用下一个配置

      controllers:
      resource: ../../src/Controller/
      type: annotation
      prefix:
          - api
          - api/{_locale}
      defaults:
              _locale: en
      

      【讨论】:

        【解决方案4】:

        另一个适用于我的 Symfony 5 类似解决方案:

        # config/routes/annotations.yaml
        controllers:
            resource: '../../src/Controller/'
            type: annotation
            prefix:
                fr: ''
                en: '/en'
        

        Symfony 文档:https://symfony.com/doc/current/routing.html#localized-routes-i18n

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多