我在我的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要求?
答案 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)