2012-06-14 10 views
6

Un globale variabile per un modello Twig può essere definito all'interno del config.yml di un Symfony2 applicazione come il seguente:È una variabile globale per un modello Twig disponibile all'interno di un controller Symfony2?

twig:     
    globals: 
     var_name: var_value 

Quindi, in ogni modello Twig variabile può essere utilizzato come segue:

{{var_name}} 

che visualizzerà

var_value 

Sai un modo per ottenere il valore di una variabile globale solo all'interno di un controller Symfony2?

risposta

22

Non sembra essere un modo per ottenere un valore particolare. Ma puoi ottenere l'intera gamma di globals dal servizio ramoscello e poi recuperarne l'offset.

$twig = $this->container->get('twig'); 
$globals = $twig->getGlobals(); 
echo $globals['var_name']; 
+1

Grazie, questo è molto interessante. – JeanValjean

2

Non ero chiaro se volessi accedere alla var di ram nel controller, o semplicemente accedere a una var globale dalla config. Ecco come accedere a una var globale dal file di configurazione ...

È possibile inserire il valore nella sezione parametri della configurazione ..

parameters: 
    var_name: some_value 

Ora è possibile accedervi dal controller ..

+1

Grazie per la risposta. La domanda è correlata alle variabili globali definite per i modelli Twig! Possono essere accessibili anche all'interno di un Controller o possono essere utilizzati solo nei modelli Twig? – JeanValjean

+1

La [guida ufficiale di Symfony] (http://symfony.com/doc/current/cookbook/templating/global_variables.html) afferma che il file _parameters.ini_ può essere utilizzato, ma non risponde alla mia domanda. – JeanValjean

2

Credo che faresti meglio utilizzare i parametri di configurazione fascio o DIC per il valore, e quindi aggiungerlo alle variabili globali ramoscello (tramite la classe pacchetto estensione, per esempio), e non cercando di fare il contrario .

+1

Quindi, la risposta è "No, non è possibile"? – JeanValjean

4

La pratica corretta è seguire il tutorial ufficiale sulle variabili globali di Twig nello Symfony's Cookbook. In pratica, si dovrebbe definire una variabile globale che può essere utilizzato nel controller, ad esempio:

; app/config/parameters.ini 
    [parameters] 
    my_global_var: HiAll 

Poi la variabile è definita come globale per i template Twig

# app/config/config.yml 
twig: 
    globals: 
     my_var: %my_global_var% 

Quindi, {{my_var}} tornerà HiAll ma si dovrebbe fare attenzione al valore una volta nel file parameters.ini.

Quindi, la risposta alla domanda è no! O precisamente, non in modo efficace. MDrollette disegnato in un modo possibile!

+0

Sono di più per questa soluzione in quanto consente anche di iniettare il param in classi a contenitore consapevole.Il parametro può comunque essere definito direttamente in config.yml –

Problemi correlati