在routing.yml中使用来自parameters.yml的数组

时间:2014-01-30 17:05:11

标签: symfony yaml symfony-2.4

我在parameters.yml

中收到了语言环境声明
parameters:
    locale:            en
    locales:           [ en, de, fr, it, es, pt, ru, ja, zh ]

并希望在locales

中重复使用routing.yml参数
homepage_locale:
    pattern: /{_locale}
    defaults: { _controller: SiteBundle:World:index }
    requirements: { _locale: %locales% }

但这显然会导致

The container parameter "locales", used in the route configuration value 
"%locales%", must be a string or numeric, but it is of type array.

有没有办法重用这个参数,或者我真的必须将语言环境编写为字符串来满足这种yaml / regex格式,如下所示:

en|de|fr|it|es|pt|ru|ja|zh

3 个答案:

答案 0 :(得分:2)

在src / AppBundle / DependencyInjection / AppExtension.php

您可以在此代码中添加加载功能

    $languages = $container->getParameter('languages');
    $container->setParameter('languages_string', implode('|', $languages));

然后您可以在注释中使用

     *     requirements={"_locale": "%languages_string%"},

它可以防止配置文件中的重复参数。

答案 1 :(得分:1)

怎么样:

parameters:
    locale:            en
    locales:           en|de|fr|it|es|pt|ru|ja|zh

答案 2 :(得分:-1)

也许你必须尝试

_locale: en|de|fr|it|es|pt|ru|ja|zh

好看的