1

我的项目中有一个语言选择器,可以使用语言环境参数 {_locale} 重定向到索引页面,但是当链接是在 routing.yml 中设置的默认语言环境时,链接看起来不同。这是我的代码:

我在代码中生成链接:

<a href="{{ path('ProjectBaseBundle_index', {'_locale': country.idlang}) }}">
    ...
</a>

这是routing.yml:

ProjectBaseBundle_index:
    pattern:  /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index, _locale: es }
    requirements:
        _locale: en|fr|de|es

这会正确生成所有语言的路线,购买默认的路线看起来不同:

http://project.dev/app_dev.php/en
http://project.dev/app_dev.php/fr
http://project.dev/app_dev.php/de
http://project.dev/app_dev.php/?_locale=es

es是我们的默认语言代码。我正在使用 Symfony 2.1

任何人都知道如何为默认语言生成相同的路由?

4

2 回答 2

1

发生这种情况是因为要求的条件和提供的参数UrlGenerator- 通过参数数组传递的未知参数会自动附加到 URL 的末尾作为 GET 参数。

您是否尝试将默认语言环境放入config.yml 而不是将其放入defaults路线部分?

Symfony-2.0

framework:
    session: { default_locale: es }

Symfony-2.1

framework:
    default_locale: es
于 2012-07-29T17:22:26.930 回答
0

我刚刚发现它是有道理的,因为默认语言的参数 {_locale} 不存在,因此系统将该参数附加为 GET 参数。

我找到了解决方法:

ProjectBaseBundle_default:
    pattern: /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index , _locale: %locale% }

ProjectBaseBundle_index:
    pattern: /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index }
    requirements:
        _locale: en|fr|de|es

我在 Symfony 板上打开了一个问题:https ://github.com/symfony/symfony/issues/5135

于 2012-08-01T07:41:30.560 回答