2012-06-14 51 views
6

A variable global para una plantilla Twig se puede definir dentro de la config.yml de un aplicación Symfony2 como en el siguiente:¿Hay una variable global para una plantilla Twig disponible dentro de un controlador Symfony2?

twig:     
    globals: 
     var_name: var_value 

Por lo tanto, en cada plantilla Twig la variable puede ser utilizado de la siguiente manera:

{{var_name}} 

que mostrará

var_value 

¿Conoces esa forma de obtener el valor de una variable global dentro de un controlador Symfony2?

Respuesta

22

No parece haber una manera de obtener un valor en particular. Pero puedes obtener la gama completa de globales del servicio de rama y luego tomar su compensación.

$twig = $this->container->get('twig'); 
$globals = $twig->getGlobals(); 
echo $globals['var_name']; 
+1

Gracias, esto es muy interesante. – JeanValjean

2

No estaba claro si deseaba acceder al twig var en el controlador, o simplemente acceder a una var global desde la configuración. Aquí es cómo acceder a un var global desde el archivo de configuración ...

Puede colocar el valor en la sección de parámetros de la configuración ..

parameters: 
    var_name: some_value 

Ahora se puede acceder a él desde el controlador ..

$value = $this->container->getParameter('var_name'); 
+1

Gracias por la respuesta. ¡La pregunta está relacionada con las variables globales definidas para las plantillas de Twig! ¿Se puede acceder también dentro de un Controlador o solo se pueden usar en plantillas Twig? – JeanValjean

+1

La [guía oficial de Symfony] (http://symfony.com/doc/current/cookbook/templating/global_variables.html) indica que se puede usar el archivo _parameters.ini_, pero no responde mi pregunta. – JeanValjean

2

Creo que sería mejor utilizar parámetros de configuración del haz o DIC para su valor, y luego añadirlo a las variables globales ramita (a través de la clase de extensión de paquete, por ejemplo), y no tratando de hacer lo contrario .

+1

Entonces, ¿la respuesta es "No, no es posible"? – JeanValjean

4

La práctica correcta es seguir el tutorial oficial sobre las variables globales de Twig en el Symfony's Cookbook. En la práctica, se debe definir una variable global que puede ser utilizado en los controladores, por ejemplo:

; app/config/parameters.ini 
    [parameters] 
    my_global_var: HiAll 

entonces la variable se define como global para las plantillas Twig

# app/config/config.yml 
twig: 
    globals: 
     my_var: %my_global_var% 

Por lo tanto, {{my_var}} volverá HiAll pero uno debe hacerse cargo del valor una vez en el archivo parameters.ini.

Entonces, la respuesta a la pregunta es ¡no! O precisamente, no de manera efectiva. ¡MDrollette dibujó una manera posible!

+0

Estoy más a favor de esta solución, ya que también permite inyectar el parámetro en clases conscientes de contenedor.El parámetro aún se puede definir directamente en config.yml aunque –

Cuestiones relacionadas