Symfony2路由全局{_locale}要求

时间:2012-08-02 15:53:38

标签: routing yaml symfony-2.1

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

的routing.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要求?

2 个答案:

答案 0 :(得分:11)

我发现了一种方法:

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

掌握routing.yml

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

Child routing-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 }

使用此路由配置,我可以最小化需要编写区域设置要求的位置。

答案 1 :(得分:0)

看看这个讨论:

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

似乎可以执行类似于您需要的操作,只是在路径的开头指定了{_locale}参数,而不是在结尾处。此外,你需要运行2.1版symfony的beta 4(根据Fabien)