2012-08-09 113 views
9

我無法找到一種方法來包含不同的security.yml文件,這些文件將根據Symfony2的環境包含在內。例如,我想爲我的驗收測試設置一個內存中的用戶提供者,因爲我不需要在這裏測試我的實體和東西,我只想對我的觀點進行驗收測試。針對不同環境的不同security.yml文件

但事實證明,這不是一件容易的事情。我從我的config.yml中刪除了security.yml,將其更名爲security_prod.yml,並創建了一個security_test.yml,其中包含in_memory用戶提供商。然後我分別在我的生產和測試配置中包含了security_prod.ymlsecurity_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?什麼可能導致這種行爲?

+3

您可以發佈您config.yml config_prod.yml和config_test.yml(或至少部分包括文件在內)? – 2012-08-09 08:45:54

+2

@CarlosGranados,謝謝你的關心,但事實證明,問題發現坐在我的辦公室椅子上。我包括我的security.ymls兩次:) – kix 2012-08-09 09:12:00

+0

這就是我所懷疑的,這就是爲什麼我要求你發佈這些文件 – 2012-08-09 09:15:37

回答

2

指令對於那些,誰是尋找它(以及不紅評論):

  1. 針對不同的環境創建不同config文件:config_test.ymlconfig_dev.ymlconfig_prod.yml
  2. 創建不同security文件:security_test.ymlsecurity_dev.ymlsecurity_prod.yml
  3. 導入security_test.ymlconfig_test.yml等等其他環境。舉例config_test.yml

    imports: 
        - { resource: security_test.yml } 
    
  4. 請確保您已經security_*.yml只有一次(基本上筆者這樣做是錯誤的)
相關問題