He agregado una configuración a mi archivo config.yml como tal:
app.config:
contact_email: somebody@gmail.com
...
Por mi vida, no puedo entender cómo leerlo en una variable. Intenté algo como esto en uno de mis controladores:
$recipient =
$this->container->getParameter('contact_email');
Pero recibo un error que dice:
Se debe definir el parámetro "contact_email".
He borrado mi caché, también busqué en todas partes en la documentación del sitio recargado de Symfony2, pero no puedo encontrar cómo hacerlo.
Probablemente demasiado cansado para resolver esto ahora. ¿Alguien puede ayudarme con esto?
symfony
configuration
josef.van.niekerk
fuente
fuente
swiftmailer: delivery_address: [email protected]
puede encontrar más información en el libro de cocina de Symfony2%parameter_name%
notación - (en YAML)Si bien la solución de mover el
contact_email
toparameters.yml
es fácil, como se propone en otras respuestas, eso puede saturar fácilmente su archivo de parámetros si maneja muchos paquetes o si maneja bloques de configuración anidados.PRIMER ENFOQUE: Bloque de configuración separado, obteniéndolo como parámetro
Con una extensión ( más sobre extensiones aquí ) puede mantener esto fácilmente "separado" en diferentes bloques en el
config.yml
y luego inyectarlo como un parámetro que se puede obtener del controlador.Dentro de su clase de Extensión dentro del
DependencyInjection
directorio escriba esto:Luego, en su config.yml, config_dev.yml y así puede configurar
Para poder procesar eso
config.yml
dentro de tuMyNiceBundleExtension
también necesitarás unaConfiguration
clase en el mismo espacio de nombres:Luego puede obtener la configuración de su controlador, como lo deseaba en su pregunta original, pero manteniendo la
parameters.yml
limpieza y configurándolaconfig.yml
en secciones separadas:SEGUNDO ENFOQUE: Bloque de configuración separado, inyectando la configuración en un servicio
Para los lectores que buscan algo similar, pero para obtener la configuración de un servicio, existe una forma aún mejor que nunca abarrota el espacio común de "parámetros" e incluso no necesita
container
que se pase al servicio (pasar el contenedor completo es práctica para evitar).Este truco anterior todavía "se inyecta" en el espacio de parámetros de su configuración.
Sin embargo, después de cargar su definición del servicio, puede agregar una llamada a un método como, por ejemplo,
setConfig()
que inyecta ese bloque solo al servicio.Por ejemplo, en la clase de extensión:
Luego, en su
services.yml
, defina su servicio como de costumbre, sin ningún cambio absoluto:Y luego en tu
SillyManager
clase, solo agrega el método:Tenga en cuenta que esto también funciona para matrices en lugar de valores escalares. Imagine que configura una cola de conejo y necesita host, usuario y contraseña:
Por supuesto, debe cambiar su árbol, pero luego puede hacer:
y luego en el servicio hacer:
¡Espero que esto ayude!
fuente
MyNiceProjectExtension->load()
método con esta línea:$container->setParameter( 'my_nice_project.contact_email', $processedConfig[ 'contact_email' ]);
. Gracias Xavi!Tengo que agregar a la respuesta de douglas, puede acceder a la configuración global, pero Symfony traduce algunos parámetros, por ejemplo:
son
Puede usar var_dump para buscar una clave o valor especificado.
fuente
Para poder exponer algunos parámetros de configuración para su paquete, debe consultar la documentación para hacerlo. Es bastante fácil de hacer :)
Aquí está el enlace: Cómo exponer una configuración semántica para un paquete
fuente
Como decía anteriormente: puede acceder a cualquier parámetro utilizando el contenedor de inyección y usar su propiedad de parámetro.
"Symfony - Trabajando con definiciones de servicio de contenedor" es un buen artículo al respecto.
fuente
Aprendí una manera fácil del ejemplo de código de http://tutorial.symblog.co.uk/
1) observe el ZendeskBlueFormBundle y la ubicación del archivo
2) observe Zendesk_BlueForm.emails.contact_email y la ubicación del archivo
3) observe cómo lo obtengo en $ client y la ubicación del archivo del controlador
fuente