How to Inject Variables Automatically into all Templates
Warning: You are browsing the documentation for Symfony 4.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.2 (the current stable version).
Twig allows you to automatically inject one or more variables into all templates.
These global variables are defined in the twig.globals
option inside the
main Twig configuration file:
1 2 3 4 5
# config/packages/twig.yaml
twig:
# ...
globals:
ga_tracking: 'UA-xxxxx-x'
Now, the variable ga_tracking
is available in all Twig templates, so you
can use it without having to pass it explicitly from the controller or service
that renders the template:
1
<p>The Google tracking code is: {{ ga_tracking }}</p>
Referencing Services
In addition to static values, Twig global variables can also reference services from the service container. The main drawback is that these services are 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 service ID string with
the @
character, which is the usual syntax to
refer to services in container parameters:
1 2 3 4 5 6
# config/packages/twig.yaml
twig:
# ...
globals:
# the value is the service's id
uuid: '@App\Generator\UuidGenerator'
Now you can use the uuid
variable in any Twig template to access to the
UuidGenerator
service:
1
UUID: {{ uuid.generate }}