是否可以添加自定义全局 Symfony2 路由变量,如 _format 和 _locale?

Is it possible to add custom global Symfony2 route variables like _format and _locale?

在我的 Symfony2 项目中,我有一个有帖子的新闻站点。这些帖子可以在不同的地区发布。当前区域(用户选择)必须是 url 的一部分。因此 URL 应如下所示:

/mag => main news site, no region selection
/mag/region1/ => posts for region 1
/mag/region2/ => ...
/mag/region1/my-news-post-slug => detail view of one post

对于新闻帖子,我使用了 Sonata News Bundle

现在我的问题是,如何将用户的区域选择添加到路线系统中,而不必更改我使用的捆绑包的每个控制器和模板? 当我将它添加到路由配置中时

magazin:
    resource:   '@SonataNewsBundle/Resources/config/routing/news.xml'
    prefix:     /mag/{region}

我收到错误消息,因为在新闻包(及其他)的控制器和模板中生成路由时未设置此参数。我需要类似 {_format}{_locale} 路由变量之类的东西,它们显然已经由路由组件添加了。是否可以添加这样的 "global" 值?

看看 Symfony 如何使用语言环境来做到这一点。

https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/HttpKernel/EventListener/LocaleListener.php

他们使用事件侦听器从请求参数中捕获语言环境并将其添加到路由器的上下文参数中。