我无法找到一种方法来包含根据Symfony2环境包含的不同security.yml
文件。例如,我想为我的验收测试提供一个内存用户提供程序,因为我不需要在这里测试我的实体和内容,我只想对我的观点进行验收测试。
但事实证明,这并不是一件容易的事。我从security.yml
中的包含中删除了config.yml
,将其重命名为security_prod.yml
并创建了security_test.yml
,其中包含in_memory
用户提供商。然后我分别在我的生产和测试配置中包含了security_prod.yml
和security_test.yml
。
然而它似乎根本不起作用:
$ SYMFONY_ENV=test app/console cache:clear
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
You are not allowed to define new elements for path "security.providers". Please define all elements for this path in one config file.
$ SYMFONY_ENV=prod app/console cache:clear
[Symfony\Component\Config\Definition\Exception\ForbiddenOverwriteException]
Configuration path "security.access_control" cannot be overwritten. You have to define all options for this path, and any of its sub-paths in one
configuration section.
在我看来,security.yml
文件名是硬编码的(这对于Symfony来说太奇怪了),但事实并非如此。
所以问题是:如何使用Symfony获得多个security.yml
?什么可能导致这种行为?
答案 0 :(得分:3)
指导那些正在寻找它的人(不要发表红色评论):
config
文件:config_test.yml
,config_dev.yml
,config_prod.yml
security
个文件:security_test.yml
,security_dev.yml
,security_prod.yml
在security_test.yml
中导入config_test.yml
,依此类推其他环境。 config_test.yml
的示例:
imports:
- { resource: security_test.yml }
security_*.yml
一次(基本上是作者犯了这个错误)