symfony - 在routing.yml中使用parameters.yml中的数组

标签 symfony yaml symfony-2.4

我的 parameters.yml 中有一个区域设置声明

parameters:
    locale:            en
    locales:           [ en, de, fr, it, es, pt, ru, ja, zh ]

并且想要重用 routing.yml 中的 locales 参数

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

最佳答案

在 src/AppBundle/DependencyInjection/AppExtension.php

您可以在加载函数中添加此代码

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

然后您就可以在注释中使用

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

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

关于symfony - 在routing.yml中使用parameters.yml中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462858/

相关文章:

php - 在 Symfony2 中使用 Pagerfanta 进行分页的正确方法是什么

php - Symfony 2 Doctrine 计数

php - 使用 Silex 将文件作为下载提供

java - 用于测试 java gitlab CI/CD 的所有单元测试的命令

php - 不能 "use"symfony2.4 中的表单

php - 与 Symfony2.4 相比,Symfony2.5 的初始化时间较慢

php - 关闭浏览器后清除缓存 - symfony2

java - 在保留注释的同时在 java 中修改 YAML

sonata-admin - SonataAdminBundle 中的 PageableManagerInterface 错误

python - 将 Django 数据库导出到 YAML 文件