Symfony2 i18n路由 - 定义一系列需求

时间:2012-07-17 10:37:14

标签: symfony

是否可以定义Symfony2路由规则中使用的语言环境数组,这样我就不必在每个路由中反复重复它,并在我更改支持的语言列表时单独更改每个路由?

我知道快速搜索&amp;替换<{1}}中的但是可以轻松扩展问题的范围,以便引发这样的问题:是否可以在外部提供此区域设置数组(即可以使用它从数据库中读取)?

澄清 - 以下是我现在所拥有的一个例子:

routing.yml

以下是我想要的例子:

page_show:
    pattern: /{_locale}/page/{slug}
    defaults: { _controller: myCompanymyBundle:Cms:pageShow }
    requirements:
        _locale: en|pl
        slug: "[^,]+"

news_archive:
    pattern: /{_locale}/news/archive
    defaults: { _controller: myCompanymyBundle:Cms:newsArchive }
    requirements:
        _locale: en|pl

其中page_show: pattern: /{_locale}/page/{slug} defaults: { _controller: myCompanymyBundle:Cms:pageShow } requirements: _locale: languages slug: "[^,]+" news_archive: pattern: /{_locale}/news/archive defaults: { _controller: myCompanymyBundle:Cms:newsArchive } requirements: _locale: languages 是一个数组,无论是YAML数组还是外部提供的PHP数组;它并不是很重要。

这对于进一步简化我正在编写的应用程序的配置非常有帮助。我想在config.yml文件中提取尽可能多的配置。因此,如果我决定,例如,我想快速添加一种新语言并且我已经在业务逻辑和模板层中支持它,我只需要修改languages中的语言数组,瞧,它已经完成了

1 个答案:

答案 0 :(得分:0)

每次都会让我烦恼。我唯一可以提供的是将你的需求参数放到app / config / parameters.yml

# src/App/Resources/config/routing.yml
sport:
    pattern: /{_locale}/{sport}
    defaults: { _controller: App:Vote:vote }
    requirements: { _locale: %routing_locales%, sport: %routing_sports% }

# app/config/parameters.yml
parameters:
    # routing requirement regex
    routing_sports:    'hockey|football' # available sports so far
    routing_locales:   'de|fr' # available locales so far