Geschwindigkeit #parse-aber es einer Variablen zuweisen
Sagen, Sie haben ein standard-template mit enthalten (geparst) header, body, footer Vorlagen.
In der Körper-Vorlage eine variable wie $subject definiert wird, und Sie möchten, dass auch in der Kopfzeile angezeigte Vorlage.
In einigen anderen template-Sprachen wie HTML::Mason perl-basierter) würden Sie bewerten den Körper Vorlage zuerst zum abholen der $subject variable speichern aber es ist die Ausgabe temporär in einer Variablen, so dass die endgültige Ausgabe könnte am Ende in der richtigen Reihenfolge (header, body, footer)
In der Geschwindigkeit würde es etwa so Aussehen
set ($body=#parse("Körper.vm"))
parse("header.vm")
${body}
parse("footer.vm")
Dies jedoch nicht zu funktionieren scheint, irgendwelche Gedanken auf, wie dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder der beiden oben genannten Lösungen arbeiten würde. Die VelocityLayoutServlet Lösung erfordert ein extra Paket (auch von der Geschwindigkeit) genannt Velocity-Tools. Ich bin teilweise zu diesem Ansatz (und Varianten) für mich.
Eine Dritte Methode ist einfach die #parse innerhalb von Anführungszeichen:
Innerhalb ein #gesetzt, alles, was in doppelten Anführungszeichen ausgewertet wird. Strings in einfachen Anführungszeichen übergeben werden, im wahrsten Sinne des Wortes.
Können Sie dies tun, indem Sie VelocityLayoutServlet die Teil der VelocityTools.
Dies ermöglicht Ihnen, definieren Sie ein layout für Ihre Anwendung-nennen wir es
application.vm
--, in dem Sie analysieren können, in Kopf-und Fußzeilen etc und erklären, wo der Hauptteil-Inhalt platziert wird, mit derscreen_content
Erklärung, e.g:VelocityLayoutServlet
wird evalulate die templates (und daher Variablen) vor dem Rendern mit dem Sie eine$subject
variable in Ihrem Körper-Vorlage, e.g:Detaillierte Informationen finden Sie in der Velocity-Dokumentation.
Wenn ich Sie richtig verstehe, möchten Sie eine Velocity-variable mit dem Namen
$subject
interpoliert in dieheader.vm
und diebody.vm
Vorlagen. Jetzt wird die variable definiert wird, in derbody.vm
Vorlage, so dass Sie nicht finden es in der früheren Vorlageheader.vm
.Warum Sie nicht Abstrakt aus der definition von $Subjekt in seine eigene template-snippet, genannt
globals.vm
sagen, dann, dass in der top-level-Vorlage. So würde man haben: