.. index:: single: Templating; Global variables How to Inject Variables into all Templates (i.e. Global Variables) ================================================================== Sometimes you want a variable to be accessible to all the templates you use. This is possible inside your ``app/config/config.yml`` file: .. configuration-block:: .. code-block:: yaml # app/config/config.yml twig: # ... globals: ga_tracking: UA-xxxxx-x .. code-block:: xml UA-xxxxx-x .. code-block:: php // app/config/config.php $container->loadFromExtension('twig', array( // ... 'globals' => array( 'ga_tracking' => 'UA-xxxxx-x', ), )); Now, the variable ``ga_tracking`` is available in all Twig templates: .. code-block:: html+jinja

The google tracking code is: {{ ga_tracking }}

It's that easy! Using Service Container Parameters ---------------------------------- You can also take advantage of the built-in :ref:`book-service-container-parameters` system, which lets you isolate or reuse the value: .. code-block:: yaml # app/config/parameters.yml parameters: ga_tracking: UA-xxxxx-x .. configuration-block:: .. code-block:: yaml # app/config/config.yml twig: globals: ga_tracking: "%ga_tracking%" .. code-block:: xml %ga_tracking% .. code-block:: php // app/config/config.php $container->loadFromExtension('twig', array( 'globals' => array( 'ga_tracking' => '%ga_tracking%', ), )); The same variable is available exactly as before. Referencing Services -------------------- Instead of using static values, you can also set the value to a service. Whenever the global variable is accessed in the template, the service will be requested from the service container and you get access to that object. .. note:: The service is not loaded lazily. In other words, as soon as Twig is loaded, your service is instantiated, even if you never use that global variable. To define a service as a global Twig variable, prefix the string with ``@``. This should feel familiar, as it's the same syntax you use in service configuration. .. configuration-block:: .. code-block:: yaml # app/config/config.yml twig: # ... globals: user_management: "@acme_user.user_management" .. code-block:: xml @acme_user.user_management .. code-block:: php // app/config/config.php $container->loadFromExtension('twig', array( // ... 'globals' => array( 'user_management' => '@acme_user.user_management', ), )); Using a Twig Extension ---------------------- If the global variable you want to set is more complicated - say an object - then you won't be able to use the above method. Instead, you'll need to create a :ref:`Twig Extension` and return the global variable as one of the entries in the ``getGlobals`` method.