如何从默认语言的URL中删除语言参数?

时间:2018-02-14 21:10:36

标签: php symfony

在Symfony 3.4项目中,我需要使用几种语言进行本地化。我想制作如下网址:

  • mysite.com/path/page/1(默认语言='en')
  • mysite.com/de/path/page/1(代表'de'语言)
  • mysite.com/fr/path/page/1(代表'fr'语言)
  • 等...

所以我想将语言代码添加到URL中,但不是默认的。

同时我宁愿不要在Twig模板中过度复杂化URL创建。完美的情况是根本不更改path(...)来电。

我的想法是将以下内容添加到config.yml

parameters: locale: en locale_url: '' framework: default_locale: "%locale%"

以及以下routing.yml

mybundle: resource: "@MyBundle/Controller/" type: annotation prefix: /{_locale}/ requirements: _locale: de|fr| defaults: {_locale: %locale_url%}

然后我会在locale事件中更改locale_urlonKernelRequest

使用上述代码生成URL很有效。唯一的问题是我无法在运行时更改locale_url的值,因为引发了以下错误: Impossible to call set() on a frozen ParameterBag.

我发现使用symfony/config组件会有所帮助,但我在其文档中找不到合适的内容。

如何从默认语言的URL中删除语言参数?

0 个答案:

没有答案