Wie ruft man alle Variablen aus einer Zweigvorlage ab?
Ist es möglich, zum abrufen aller Variablen innerhalb eines Twig-template mit PHP?
Beispiel someTemplate.twig.php:
Hello {{ name }},
your new email is {{ email }}
Nun will ich etwas wie das hier tun:
$template = $twig->loadTemplate('someTemplate');
$variables = $template->getVariables();
$Variablen sollten jetzt die Angaben "name" und "email".
Der Grund, warum ich dies tun wollen, ist, dass ich arbeite gerade an einem CMS system
wo meine twig-templates und Variablen dynamisch festgelegt, die von meinen Usern
und auch Sie füllen die Variablen über eine API.
Ich möchte die default Werte setzen, um Variablen und deshalb habe ich
eine Liste aller Variablen, die vorhanden sind in der Vorlage...
InformationsquelleAutor der Frage Stefan Neubig | 2012-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE 2017
Ist es möglich, durch die Verwendung
{{ dump() }}
filter. Danke für den Hinweis in den Kommentaren!VERALTET
Ist es nicht möglich.
Kann man sich diese variable in twig templates, und fügen Sie
|default('your_value')
- filter zu Ihnen. Es wird überprüft, ob variable definiert ist und nicht leer ist, und wenn Nein - wird ersetzen Sie es mit Ihrem Wert.InformationsquelleAutor der Antwort Vitalii Zurian
Dies ist nützlich finde ich, um alle Schlüssel der obersten Ebene in der aktuellen Kontext:
Dank https://www.drupal.org/node/1906780
InformationsquelleAutor der Antwort duncan
Antwort Hinzugefügt, die in 2015
In der Vergangenheit war es nicht möglich. Aber seit version 1.5 dump() - Funktion wurde Hinzugefügt. So können Sie alle Variablen aus dem aktuellen Kontext aufrufen von dump() ohne Parameter:
Jedoch, müssen Sie die Twig_Extension_Debug Erweiterung explizit bei der Erstellung Ihrer Zweig-Umgebung, da
dump()
ist nicht standardmäßig verfügbar:Wenn du schon mit so etwas wie Symfony, Silex usw.
dump()
ist standardmäßig verfügbar.EDIT:
Kann man auch auf alle Variablen, die übergeben werden, um eine Vorlage (außerhalb des Kontextes der
dump()
), verwenden Sie die Globale variable_context
. Dies ist, was Sie gesucht haben. Es ist ein array die alle Variablennamen auf Ihre Werte.Sie können finden Sie einige zusätzliche Informationen in den Zweig-Dokumentation.
Für diese konkrete Frage aber, wäre es wohl am besten sein, sammeln Sie alle diese benutzerdefinierte Variablen, die Sie sprechen, unter einem gleichen Dach variable, so dass das abrufen würden, nicht ein Kopfschmerz. Ich würde ein array mit dem Namen
custom_variables
oder was auch immer.InformationsquelleAutor der Antwort felipsmartins
Hier ist der beste Weg und einfachste Weg, um Sie dump werden alle Variablen :
Quelle : https://www.drupal.org/docs/8/theming/twig/discovering-and-inspecting-variables-in-twig-templates
InformationsquelleAutor der Antwort ReaperSoon
Wenn alle Zweig-Elemente in einem text, verwenden Sie einfach:
Hatte ich ein Problem, wo die WSIWYG-editor platziert werden HTML-tags innerhalb von Twig-Variablen. Ich filter Sie mit:
UPDATE
Verwendung dieses Ausdrucks finden Sie alle {{ }} und {% %}
InformationsquelleAutor der Antwort 19Gerhard85
Nachdem mit duncan die Antwort für einige Zeit fand ich endlich den "richtigen" Weg dump twig-Variablen eine Vorlage
Das ist es.Alle verfügbaren Variablen im template ausgegeben werden und in der Deponie-Abschnitt der profiler, nicht in der Mitte Ihrer html wie mit {{ dump() }}
wenn Sie den Inhalt der dump() in eine variable
Sie 'll bekommen alle Variablen, aber in der "dump bereit" html, so wäre es ein Schmerz zu analysieren
Hoffe, das hilft
InformationsquelleAutor der Antwort Mawcel
Die Art, wie ich es
Und dann ich habe einfach mal meine Konsole mit DevTools
InformationsquelleAutor der Antwort Luke Madhanga
Ich denke 19Gerhard85 die Antwort ist ziemlich gut, obwohl, müssen Sie möglicherweise einige Optimierungen, da passte es einige leere strings für mich. Ich mag mit vorhandenen Funktionen, wo möglich, und dies ist ein Ansatz, meist mit Zweig-Funktionen. Sie benötigen Zugriff auf Ihre Anwendung Zweig Umgebung.
Und die nur custom-Teil ist es die rekursive Funktion zum sammeln nur bestimmte Arten von Knoten:
InformationsquelleAutor der Antwort mickadoo
Haben Sie, um eine Analyse der Vorlage, und gehen Sie durch die AST kehrt:
InformationsquelleAutor der Antwort devicenull
Nachdem ich verbrachte eine Nacht, versuchen, alle der oben genannten Antworten, die ich realisiert, für einige unvorhergesehene Grund, regexps nicht an allen funktionierte mit meinem einfachen Vorlagen. Sie kehrten junk-oder Teilinformationen. Also habe ich beschlossen zu gehen durch das löschen aller Inhalte zwischen tags statt zählen-tags ^_^.
Ich meine, wenn eine Vorlage ist
'AAA {{BB}} CC {{DD}} {{BB}} SS'
ich nur hinzufügen'}}'
am Anfang der Vorlage und'{{
am Ende.... und für alle Inhalte zwischen}}
und{{
werde ich nur Streifen aus, die Zugabe Komma dazwischen =>}}{{BB,}}{{DD,}}{{BB,}}{{
. Dann einfach löschen}}
und{{
.Es dauerte etwa 15 Minuten, um zu schreiben und zu testen.... aber mit regexps hab ich verbrachte etwa 5 Stunden, jedoch ohne Erfolg.
Hoffe, es wird jemandem helfen 🙂
InformationsquelleAutor der Antwort Alexey Abraham
Erstellen Sie eine Twig_Extension und fügen Sie eine Funktion hinzu, mit der needs_context Flagge:
Wird der Kontext übergeben werden als Erster parameter an Ihre Funktion, die alle Variablen.
Auf Ihrem Zweig, Vorlage, die Sie nur noch zu nennen, dass die Funktion:
Wenn Sie Hilfe benötigen, auf die Schaffung eines Twig-Erweiterung finden Sie in dieser Dokumentation:
http://twig.sensiolabs.org/doc/2.x/advanced.html
InformationsquelleAutor der Antwort José Ricardo Júnior
Diese Frage hat ein douplicate – dort fand ich ein nützliches und die ein bisschen mehr " powerfull RegEX als oben. Habe ich verbessert zu entsprechen, genauer:
InformationsquelleAutor der Antwort Martin Winter
Spaß haben 🙂
InformationsquelleAutor der Antwort Lars