Auf die Sitzung von der TWIG-Vorlage aus zugreifen
Ich gesucht habe viel im Netz, wie der Zugriff auf die globalen $_SESSION
array von TWIG template und gefunden: {{app.session.get('index')}}
aber wenn ich rufe, es gibt eine leere Zeichenfolge zurück. Ich habe eine $_SESSION['filter']['accounts']
und ich bin immer diese Fehlermeldung beim aufrufen {{app.session.get('filter').accounts}}
: Item "accounts" for "" does not exist
. Was mache ich falsch?
InformationsquelleAutor der Frage haynar | 2011-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
{{app.session}}
bezieht sich auf dieSession
Objekt und nicht die$_SESSION
array. Ich glaube nicht, dass die$_SESSION
array ist zugänglich, sofern Sie nicht explizit übergeben Sie es an jeden Zweig, Vorlage, oder wenn Sie eine Erweiterung, der Sie verfügbar macht.Symfony2 ist Objekt-orientiert, so sollten Sie die
Session
Gegenstand, um session-Attribute und nicht sich verlassen auf das array. DieSession
Objekt wird die Zusammenfassung dieses Zeug von Ihnen entfernt ist, so ist es einfacher zu sagen, speichern Sie die session in einer Datenbank, weil die Speicherung der session-variable wird von Ihnen ausgeblendet.So, setzen Sie das Attribut in der session und das abrufen der Wert im twig-template durch Verwendung der
Session
Objekt.Hoffe, das hilft.
Grüße,
Matt
InformationsquelleAutor der Antwort Matt
Einem einfachen trick ist die Definition des $_SESSION-array als Globale variable. Für diese, Bearbeiten Sie die core.php Datei im extension Ordner, indem Sie diese Funktion :
Dann, Sie werden in der Lage sein, um Zugang jede session-variable :
wenn Sie möchten, den Zugang zu
InformationsquelleAutor der Antwort Henry
Setup-Zweig
Dann innerhalb der Vorlage access-Sitzung-Werte z.B.
InformationsquelleAutor der Antwort user1279047
Die Möglichkeit zum Zugriff auf eine session-variable im Zweig:
InformationsquelleAutor der Antwort joan16v
Ich festgestellt, dass der sauberste Weg, dies zu tun ist, um eine benutzerdefinierte TwigExtension und überschreiben Sie die
getGlobals()
Methode. Anstatt$_SESSION
ist, ist es auch besser, Symfony istSession
Klasse, da es Griffe automatisch starten/beenden des session.Ich habe die folgende Erweiterung in /src/AppBundle/Twig/AppExtension.php:
Dann fügen Sie diese in /app/config/services.yml:
Dann die session zugegriffen werden kann, aus jeder beliebigen Ansicht verwenden:
InformationsquelleAutor der Antwort this.lau_
Warum nutzen Sie nicht {{- app.Objekt name.field name}} zum Zugriff auf die variable?
InformationsquelleAutor der Antwort Somnath De