2012-08-09 27 views
9

Ich konnte keine Möglichkeit finden, verschiedene security.yml Dateien einzuschließen, die je nach Symfony2-Umgebung enthalten wären. Zum Beispiel wollte ich einen In-Memory-Benutzer-Provider für meine Akzeptanztests haben, da ich meine Entitäten und Zeug hier nicht wirklich testen muss, ich möchte nur einen Akzeptanztest für meine Ansichten machen.Verschiedene security.yml-Dateien für verschiedene Umgebungen

Aber wie sich herausstellte, ist es keine leichte Sache. Ich entfernte security.yml von enthält in meinem config.yml, benannte es in security_prod.yml um und erstellte einen security_test.yml, der den Benutzerprovider hat. Dann habe ich security_prod.yml und security_test.yml in meiner Produktion und Testkonfigurationen enthalten.

Doch scheint es gar nicht arbeiten:

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

Es erschien mir wie der security.yml Dateiname fest einprogrammiert wurde (die für Symfony viel zu seltsam wäre), und es war nicht.

Also die Frage ist: Wie bekomme ich mehrere security.yml s mit Symfony? Und was könnte dieses Verhalten verursachen?

+3

Können Sie Ihre config.yml config_prod.yml und config_test.yml (oder zumindest die Teile abgeben wo sind die Dateien enthalten? –

+2

@CarlosGranados, danke für deine Besorgnis, aber es stellte sich heraus, dass das Problem in meinem Bürostuhl sitzt. Ich habe meine security.ymls zweimal eingeschlossen :) – kix

+0

Das ist, was ich vermutete, und deshalb habe ich Sie gebeten, diese Dateien –

Antwort

2

Anleitung für diejenigen, die für sie sucht (und nicht rot Kommentare):

  1. verschiedenen Umgebungen Erstellen Sie verschiedene config Dateien für: config_test.yml, config_dev.yml, config_prod.yml
  2. verschiedene erstellen security Dateien: security_test.yml, security_dev.yml, security_prod.yml
  3. Importieren security_test.yml in config_test.yml und so weiter für andere Umgebungen. Beispiel für config_test.yml:

    imports: 
        - { resource: security_test.yml } 
    
  4. Stellen Sie sicher, security_*.yml nur einmal enthalten (im Grunde Autor diesen Fehler hat)
Verwandte Themen