2012-08-09 34 views
9

Symfony2の環境に応じて異なるsecurity.ymlファイルをインクルードする方法を見つけることができませんでした。たとえば、受入れテストのためにメモリ内のユーザープロバイダを用意したいと思っていました。実際にエンティティをテストする必要はありません。私の見解の受け入れテストを行いたいだけです。異なる環境のsecurity.ymlファイルが異なる

しかし、判明したように、それは簡単なことではありません。私がconfig.ymlに含むからsecurity.ymlを削除し、それをsecurity_prod.ymlに改名し、in_memoryユーザプロバイダを持つsecurity_test.ymlを作成しました。それから私はそれぞれsecurity_prod.ymlsecurity_test.ymlを私の生産とテスト設定に含めました。

しかし、まったく機能していないようです:security.ymlファイル名は(symfonyのためにあまりにも奇妙なことと思われる)、そして、それはありませんでしたハードコードされたようですが、私に登場

$ 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.                                

質問:私はSymfonyで複数のsecurity.ymlを取得するにはどうすればよいですか?そして、この現象を引き起こす原因は何ですか?それを探している(と赤のコメントはない)されている人のための

+3

あなたのconfig.ymlのconfig_prod.ymlとconfig_test.yml(または少なくとも一部を投稿することができます(基本的に著者はこの間違いをした)あなたは一度だけsecurity_*.ymlが含まれていることを確認してくださいファイルはどこに含まれていますか?) –

+2

@CarlosGranados、あなたの懸念に感謝しますが、問題が私のオフィスチェアに座っていることが判明しました。私は私のsecurity.ymlsを2回含めていました:) – kix

+0

これは私が疑ったことです。それがあなたにそれらのファイルを投稿するように依頼した理由です。 –

答えて

2

命令:、security_test.ymlconfig_test.ymlconfig_dev.ymlconfig_prod.yml

  • 異なるsecurityファイルを作成します。

    1. は異なる環境のためconfigファイルを別の作成しますsecurity_dev.yml,security_prod.yml
    2. security_test.ymlconfig_test.ymlにインポートするなど、他の環境でも使用できます。 config_test.ymlの例:

      imports: 
          - { resource: security_test.yml } 
      
  • 関連する問題