Iniettare variabili in tutti i template (variabili globali)

A volte si vuole che una variabile sia accessibile in tutti i template usati. Lo si può fare, modificando il file 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',
         ),
    ));
    

Ora, la variabile ga_tracking è disponibile in tutti i template Twig

<p>Il codice di tracciamento Google è: {{ ga_tracking }} </p>

È molto facile!

Usare parametri del conenitore di servizi

Si può anche usare il sistema dei I parametri del servizio, che consente di isolare o riutilizzare il valore:

# 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 stessa variabile è disponibile esattamente come prima.

Fare riferimento ai servizi

Invece di usare valori statici, si può anche impostare il valore a un servizio. Ogni volta che un template accederà alla variabile globale, il servizio sarà richiesto dal contenitore e si avrà accesso all’oggetto relativo.

Nota

Il servizio non è caricato pigramente. In altre parole, non appena viene caricato Twig, il servizio sarà istanziato, anche se la variabile globale non verrà mai usata.

Per definire un servizio come variabile globale Twig, aggiungere un prefisso @. Dovrebbe essere familiare, essendo la stessa sintassi usata nella configurazione del servizio.

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

Usare un’estensione Twig

Se la variabile globale da impostare è più complicata, come un oggetto, non si potrà usare il metodo appena visto. Occorrearà invece creare una estensione Twig e restituire la variabile globale come una delle voci del metodo getGlobals.

Tabella dei contenuti

Argomento precedente

Template

Argomento successivo

Usare e registrare percorsi di Twig con spazi di nomi

Questa pagina