2012-08-09 6 views
9

Je n'ai pas réussi à trouver un moyen d'inclure différents fichiers security.yml qui seraient inclus en fonction de l'environnement de Symfony2. Par exemple, je voulais avoir un fournisseur d'utilisateur en mémoire pour mes tests d'acceptation, parce que je n'ai pas vraiment besoin de tester mes entités et d'autres choses ici, je veux seulement faire un test d'acceptation de mes opinions.Différents fichiers security.yml pour différents environnements

Mais, en fait, ce n'est pas une chose facile à faire. J'ai enlevé security.yml d'inclus dans mon config.yml, l'ai renommé en security_prod.yml et ai créé un security_test.yml qui a le fournisseur d'utilisateur in_memory. Puis j'ai inclus security_prod.yml et security_test.yml dans mes configs de production et de test respectivement.

Pourtant, il ne semble pas fonctionner du tout:

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

Il me semblait que le nom du fichier security.yml était codé en dur (ce qui serait trop bizarre pour Symfony), et il n'a pas été. Donc, la question est: comment obtenir plusieurs security.yml avec Symfony? Et qu'est-ce qui pourrait causer ce comportement?

+3

Pouvez-vous poster votre config_prod.yml de config.yml et config_test.yml (ou au moins les parties où les fichiers sont inclus)? –

+2

@CarlosGranados, merci pour votre préoccupation, mais il s'est avéré que le problème a été trouvé assis dans ma chaise de bureau. J'ai inclus mon security.ymls deux fois :) – kix

+0

C'est ce que je soupçonnais, et c'est pourquoi je vous ai demandé de publier ces fichiers –

Répondre

2

Instruction pour ceux qui recherchent (et ne pas les commentaires rouges):

  1. Créer différents fichiers config pour différents environnements: config_test.yml, config_dev.yml, config_prod.yml
  2. Créer différents security fichiers: security_test.yml, security_dev.yml, security_prod.yml
  3. Importez security_test.yml dans config_test.yml et ainsi de suite pour d'autres environnements. Exemple pour config_test.yml:

    imports: 
        - { resource: security_test.yml } 
    
  4. Assurez-vous que vous avez inclus security_*.yml une seule fois (en gros auteur a fait cette erreur)
Questions connexes