1

我有一个正在尝试国际化的 symfony2 网络。我有带有 /en 和 /es 前缀的路由,但是如果 url 中没有指定语言,我希望 sf2 获得默认语言。

我用这个参数定义了一个根路由:

home:
    [...]
    prefix:   /{_locale}/
    defaults: { _locale: en }
    requirements:
        _locale: en|es

然后,如果我去 'www.web.com/en' 或 'www.web.com/es' 它会正确重定向,但如果我去 'www.web.com',它不会得到默认语言('en')。我收到一条错误消息No route found for "GET /".

哪里错了?

谢谢。

4

2 回答 2

0

除了你的前缀,这一切看起来都是正确的。去掉尾部斜线,否则您的路由规则会尝试匹配 w​​ww.web.com//,这意味着您实际上没有为 www.web.com 定义路由。

于 2013-09-19T13:06:27.660 回答
0

您可以通过复制路线解决此问题

在您的app/config/routing.yml中设置 2 条不同的路线:

  1. 一个留给主页/,强制到一个特定的Controller
  2. 一个用于具有语言环境前缀的所有其他路由(在此示例中使用注释定义)

插入:

app:
    pattern:   /
    defaults: {_controller: AppBundle:Default:index }

app_locale:
    resource: "@AppBundle/Controller/"
    type:     annotation
    prefix:   /{_locale}
    defaults:  { _locale: en }
于 2015-07-28T10:43:51.220 回答