Symfony2 - Zugriff auf dynamische Variablennamen in Zweig

9

Ich habe einige Variablen im Zweig wie

%Vor%

Um sie aufzurufen, durchlaufe ich das Array der Objekte "Rechnungen"

%Vor%

Irgendeine Idee? Danke.

    
Miloš 11.07.2014, 12:05
quelle

5 Antworten

19

Ich hatte gerade das gleiche Problem - und mit dieser ersten Antwort und nach einigen zusätzlichen Recherchen gefunden {{ attribute(_context, 'placeholder'~invoice.id) }} sollte funktionieren ( _context ist das globale Kontextobjekt, das alle Objekte nach Namen enthält)

    
Mathieu Jamot 06.05.2015 20:24
quelle
3

Ich denke, du könntest die Twig attribute Funktion benutzen.

Ссылка

    
Einenlum 11.07.2014 12:11
quelle
3

Anstatt die Funktion attribute zu verwenden, können Sie auf die Werte von _context array mit der regulären Klammernotation:

%Vor%

Ich würde diesen hier persönlich verwenden, da er prägnanter und meiner Meinung nach klarer ist.

Wenn die Umgebungsoption strict_variables auf true festgelegt ist , sollten Sie auch den default Filter verwenden:

%Vor%

Andernfalls erhalten Sie eine Ausnahme Twig_Error_Runtime , wenn die Variable nicht existiert. Wenn Sie beispielsweise die Variablen foo und bar haben, aber versuchen, die Variable baz (die nicht existiert) auszugeben, erhalten Sie diese Ausnahme mit der Nachricht Key "baz" for array with keys "foo, bar" does not exist .

Eine ausführlichere Möglichkeit, die Existenz einer Variablen zu überprüfen, besteht darin, den defined -Test zu verwenden :

%Vor%

Mit dem Filter default können Sie auch einen Standardwert angeben, z. null oder ein String:

%Vor%

Wenn Sie den Standardwert weglassen (d. h. Sie verwenden |default anstelle von |default(somevalue) ), ist der Standardwert eine leere Zeichenfolge.

strict_variables ist standardmäßig false , aber ich bevorzuge es auf true zu setzen, um zufällige Probleme zu vermeiden, die z. Tippfehler.

    
martias 31.01.2018 13:24
quelle
2

Meine Lösung für dieses Problem:

Erstellt ein Array von Platzhaltern (x). Wie:

%Vor%

Senden Sie beide Variablen für die Ansicht und in Ihren Vorlagenaufruf:

%Vor%

Dieser Ausdruck "B".

Ich hoffe, das hilft Ihnen.

    
Bruno Rigolon 08.09.2016 14:20
quelle
0

Ich habe die Lösung gefunden:

%Vor%     
user1409904 13.10.2015 14:47
quelle

Tags und Links