Cómo inyectar variables en todas las plantillas (es decir, Variables globales)

En ocasiones desearás que una variable sea accesible en todas las plantillas que usas. Esto es posible en tu archivo app/config/config.yml:

  • YAML
    # app/config/config.yml
    twig:
        # ...
        globals:
            ga_tracking: UA-xxxxx-x
    
  • XML
    <!-- app/config/config.xml -->
    <twig:config ...>
        <!-- ... -->
        <twig:global key="ga_tracking">UA-xxxxx-x</twig:global>
    </twig:config>
  • PHP
    // app/config/config.php
    $container->loadFromExtension('twig', array(
         // ...
         'globals' => array(
             'ga_tracking' => 'UA-xxxxx-x',
         ),
    ));
    

Ahora, la variable ga_tracking está disponible en todas las plantillas Twig:

<p>The google tracking code is: {{ ga_tracking }}</p>

¡Así de fácil! También puedes tomar ventaja de los Parámetros del servicio integrados en el sistema, lo cual te permite aislar o reutilizar el valor:

# app/config/parameters.yml
parameters:
    ga_tracking: UA-xxxxx-x
  • YAML
    # app/config/config.yml
    twig:
        globals:
            ga_tracking: "%ga_tracking%"
    
  • XML
    <!-- app/config/config.xml -->
    <twig:config ...>
        <twig:global key="ga_tracking">%ga_tracking%</twig:global>
    </twig:config>
  • PHP
    // app/config/config.php
    $container->loadFromExtension('twig', array(
         'globals' => array(
             'ga_tracking' => '%ga_tracking%',
         ),
    ));
    

La misma variable está disponible como antes.

Variables globales más complejas

Si la variable global que deseas establecer es más complicada —digamos, un objeto, por ejemplo— entonces no podrás utilizar el método anterior. En su lugar, tendrás que crear una Extensión de Twig y devolver la variable global como una de las entradas en el método getGlobals.

Bifúrcame en GitHub