Symfony2将简单的路由重定向到默认语言


Symfony2 redirect simple routes to default language

你好吗?我正在用Symfony2开发一个多语言平台。如果有人输入www.url.com/project,我想把它重定向到www.url.com/en/project。在不重复方法和所有路线几次的情况下,最简单的方法是什么?

对于主url www.url.com到www.url.com/en/,我使用以下控制器

    public function rootAction(Request $request) {
    $locale = $request -> getLocale();
    return $this -> redirect($this -> generateUrl('dbe_underConstructionLang', array('_locale' => $locale)));
    }

这里是路由:默认值:

dbe_underConstruction:
    path:     /
    defaults: { _controller: DbeBundle:UnderConstruction:root }

这是一个默认页面

dbe_aboutus:
    path:     /{_locale}/aboutus
    defaults: { _controller: DbeBundleBundle:Aboutus:index }
    requirements:
        _locale: en|fr|de

此外,我无法使登录路由多语言,因为在安全。我无法设置所需的_locale参数:

dbe_login:
path:     /login
defaults: { _controller: DbeBundle:Login:login}
 firewalls:
    secured_area:
        pattern:    ^/
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path:   /logout
            target: /

谢谢了!

对我来说,最好的解决方案是使用JMSI18RoutingBundle。在config中有一些配置。routing.yml.