2012-06-14 5 views
6

A globale Variable für eineZweig Vorlage kann in der config.yml eines Symfony2 Anwendung wie im folgenden definiert werden, wie folgt eingesetzt werden:Ist eine globale Variable für eine Twig-Vorlage in einem Symfony2-Controller verfügbar?</p> <pre><code>twig: globals: var_name: var_value </code></pre> <p>daher in jedem Zweig Vorlage Die Variable kann:

{{var_name}} 

die

01 wird angezeigt,
var_value 

Kennen Sie einen solchen Weg, um den Wert einer globalen Variablen direkt in einem Symfony2-Controller zu erhalten?

Antwort

22

Es scheint keinen Weg zu geben, einen bestimmten Wert zu erfassen. Aber Sie können das gesamte Array von Globals aus dem Zweig-Service abrufen und dann den Offsetwert abrufen.

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

Danke, das ist sehr interessant. – JeanValjean

2

Ich war nicht klar, ob Sie auf die Zweigvar in der Steuerung zugreifen wollten oder nur auf eine globale Variable von der Konfig zugreifen. Hier ist, wie eine globale var aus der Konfigurationsdatei für den Zugriff auf ...

Sie können den Wert im Parameter-Abschnitt der Konfigurations platzieren ..

parameters: 
    var_name: some_value 

Jetzt können Sie es aus der Steuerung zugreifen .. .

$value = $this->container->getParameter('var_name'); 
+1

Danke für die Antwort. Die Frage bezieht sich auf die globalen Variablen, die für Twig-Vorlagen definiert sind! Kann auf sie auch innerhalb eines Controllers zugegriffen werden oder sie können nur in Twig-Vorlagen verwendet werden? – JeanValjean

+1

Die [Symfony offizielle Anleitung] (http://symfony.com/doc/current/cookbook/templating/global_variables.html) besagt, dass die Datei _parameters.ini_ verwendet werden kann, beantwortet aber meine Frage nicht. – JeanValjean

2

Ich denke, es ist ziemlich gut Bündelkonfiguration oder DIC Parameter für Ihren Wert zu verwenden, und fügen Sie dann den Zweig Globals (über Ihre Bündelerweiterungsklasse, zum Beispiel), und nicht versuchen, das Gegenteil zu tun .

+1

Also, ist die Antwort "Nein, ist nicht möglich"? – JeanValjean

4

Die richtige Übung ist, das offizielle Tutorial über Twig globale Variablen in der zu folgen. In der Praxis sollte man eine globale Variable definieren, die in den Steuerungen, beispielsweise verwendet werden können:

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

Dann wird die Variable als global definiert, für die Zweig-Vorlagen

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

Daher wird {{my_var}}zurückkehren HiAll aber man sollte sich einmal um den Wert in der parameters.ini Datei kümmern.

Also, die Antwort auf die Frage ist nein! Oder genau, nicht auf effektive Weise. MDrollette hat einen möglichen Weg gezeichnet!

+0

Ich bin mehr für diese Lösung, da es auch ermöglicht, den Parameter in Container-fähige Klassen zu injizieren.Der Parameter kann dennoch direkt in config.yml definiert werden –