0

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

我知道在中进行快速搜索和替换很容易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

数组在哪里languages,可以是 YAML 数组,也可以是外部提供的 PHP 数组;这不是很重要。

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

4

1 回答 1

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
于 2013-08-21T18:06:28.397 回答