2012-08-09 30 views
9

No pude encontrar una manera de incluir diferentes archivos security.yml que se incluirían dependiendo del entorno de Symfony2. Por ejemplo, quería tener un proveedor de usuarios en memoria para mis pruebas de aceptación, porque realmente no necesito probar mis entidades y esas cosas aquí, solo quiero hacer una prueba de aceptación para mis puntos de vista.Diferentes archivos security.yml para diferentes entornos

Pero, como resultó, no es algo fácil de hacer. Quité security.yml de incluye en mi config.yml, lo renombré a security_prod.yml y creé un security_test.yml que tiene el proveedor de usuario in_memory. Luego he incluido security_prod.yml y security_test.yml en mis configuraciones de producción y prueba, respectivamente.

Sin embargo, no parece funcionar en absoluto:

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

Se me apareció como el nombre del archivo security.yml fue codificado (que sería demasiado raro para Symfony), y no fue.

Entonces la pregunta es: ¿cómo consigo múltiples security.yml s con Symfony? ¿Y qué podría estar causando este comportamiento?

+3

Se puede publicar su config_prod.yml config.yml y config_test.yml (o al menos las partes donde se incluyen los archivos)? –

+2

@CarlosGranados, gracias por su preocupación, pero resultó que el problema se encontró sentado en la silla de mi oficina. Estuve incluyendo mis security.ymls dos veces :) – kix

+0

Eso es lo que sospechaba, y es por eso que te pedí que publicaras esos archivos –

Respuesta

2

Instrucción para aquellos, que está buscando para ello (y no hacer comentarios rojo):

  1. crear diferentes config archivos para diferentes entornos: config_test.yml, config_dev.yml, config_prod.yml
  2. crear diferentes security archivos: security_test.yml, security_dev.yml, security_prod.yml
  3. Importe security_test.yml en config_test.yml y así sucesivamente para otros entornos. Ejemplo de config_test.yml:

    imports: 
        - { resource: security_test.yml } 
    
  4. Asegúrese de que haya incluido security_*.yml sólo una vez (básicamente autor hizo este error)
Cuestiones relacionadas