路由中的区域设置,默认语言也没有参数

mad*_*adc 4 annotations symfony

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

使用routing.yml

_index:
    resource: "@MyMainBundle/Controller/SiteController.php"
    type:     annotation
Run Code Online (Sandbox Code Playgroud)

siteController.php

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

这很安静,但是我想要的是,以下url调用相同的动作.

http://example.com/download
http://example.com/en/download
http://example.com/de/download
Run Code Online (Sandbox Code Playgroud)

如果没有languge-parameter,页面应该切换回默认语言,但这是我可以在我的操作中处理的内容.

我找到了这个答案,但根本无法让它工作. Symfony2路由中的默认语言环境

Kri*_*ith 9

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

/**
 * @Route("/{_locale}/{site}/")
 * @Route("/{site}/")
 */
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我只需要添加'defaults = {"_ locale"="en"}',否则如果在网址中找不到区域设置,则会导致错误. (3认同)