7

我在我的 routing.yml 中指定了每条路由中的参数 _locale 要求,我认为这必须是为了简化这种情况。

路由.yml

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

ProjectBaseBundle_privacy:
    pattern:  /privacy/{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:privacy }
    requirements:
        _locale: en|es

.....

ProjectBaseBundle_legal:
    pattern:  /legal/{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:legal }
    requirements:
        _locale: en|es

我正在使用 Symfony2.1 beta 3

是否可以为我的所有路线指定全局 _locale 要求?

4

2 回答 2

11

我发现了一种方法:

使用“主”路由导入路由配置。由于我的包通常包含太多信息,我一直在不同的“模块”中分离控制器、资源和路由。由于这种方法,我发现了这一点:

主路由.yml

ProjectBaseBundle_default:
    resource: "@ProjectBaseBundle/Resources/config/routing-default.yml"
    prefix:   /{_locale}/project/
    requirements:
        _locale: en|es|de|fr

子路由-default.yml

ProjectBaseBundle_default_privacy:
    pattern:  /privacy
    defaults: { _controller: ProjectBaseBundle:Default:privacy }

ProjectBaseBundle_default_legal:
    pattern:  /legal
    defaults: { _controller: ProjectBaseBundle:Default:legal }

ProjectBaseBundle_default_usage:
    pattern:  /usage
    defaults: { _controller: ProjectBaseBundle:Default:usage }

使用此路由配置,我将需要编写语言环境要求的地方减到最少。

于 2012-08-21T19:40:11.427 回答
0

看看这个讨论:

https://groups.google.com/forum/#!topic/symfony-devs/6oxsa7whBps

似乎可以做类似于您需要的事情,只是在路线的开头指定了 {_locale} 参数,而不是在结尾。您还需要运行 symfony 2.1 版本的 beta 4(根据 Fabien)

于 2012-08-02T16:12:37.907 回答