How to Inject Variables into all Templates (i.e. Global Variables)

Version: 2.1
Edit this page

Warning: You are browsing the documentation for Symfony 2.1, which is no longer maintained.

Read the updated version of this page for Symfony 5.3 (the current stable version).

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:

  • YAML
  • XML
  • PHP
1
2
3
4
5
# app/config/config.yml
twig:
    # ...
    globals:
        ga_tracking: UA-xxxxx-x

Now, the variable ga_tracking is available in all Twig templates:

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

It's that easy! You can also take advantage of the built-in Service Container system, which lets you isolate or reuse the value:

1
2
3
# app/config/parameters.yml
parameters:
    ga_tracking: UA-xxxxx-x
  • YAML
  • XML
  • PHP
1
2
3
4
# app/config/config.yml
twig:
    globals:
        ga_tracking: "%ga_tracking%"

The same variable is available exactly as before.

More Complex Global Variables

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 Twig Extension and return the global variable as one of the entries in the getGlobals method.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.