4

在我的 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}是否可以添加这样的“全局”值?

4

1 回答 1

2

看看 Symfony 如何使用 locale 做到这一点。

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

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

于 2015-07-22T15:35:23.033 回答