Im ersten Teil dieses Tutorials ging es um die Grundlagen der Dtemplate-Engine, von der prinzipiellen Funktion der Engine bis zur Verwendung von mehreren Templates für eine einzige Seite. In diesem zweiten Teil sollen einige weitere Techniken erläutert werden, um Dtemplate vollständig auszureizen: sich wiederholende Elemente, die Verwendung einer Funktion anstelle eines Variablenwertes sowie die Anbindung der Dtemplate-Engine an eine MySQL-Datenbank für datenbankgesteuertes Arbeiten mit Templates.
Verwendung von Perl-Funktionen in einem Template
Zum Einstieg etwas Einfaches: die Verwendung des Rückgabewerts einer Funktion im Aufruf der Methode parse(). Bei den Beispielen im vorigen Artikel ging es darum, Template-Variablen durch hart codierte Werte zu ersetzen. Wahrscheinlich möchte man aber gelegentlich eine Template-Variable durch das Ergebnis einer Berechnung oder den Rückgabewert einer Funktion ersetzen. Dieses einfache Template bietet hierfür ein Beispiel:
In diesem Template soll die Variable $NOW$ das aktuelle Datum und die Uhrzeit speichern, daher kann der Wert nicht in einem Script hart codiert werden. Also muss man dieser Variablen den Wert einer Funktion zuweisen, die dynamisch die aktuelle Uhrzeit generiert wie Listing A.
Die Funktion parse() ersetzt die Variable $NOW$ durch den Rückgabewert der Funktion. Dies ist eine wichtige Fähigkeit, wie sich im Folgenden zeigen wird.
Die Verwendung eigener Funktionen in einem Template
So wie man Perls eigene Funktionen zur Zuweisung von Werten an Template-Variablen verwenden kann, lassen sich auch eigene Funktionen definieren. Das folgende Beispiel illustriert dies:
Nun muss man eine Reihe von <option>-Kästchen erzeugen, um die Variable $OPTIONS$ zu ersetzen. Angenommen, die Optionsliste liegt in einem Perl-Array vor, dann kann man eine einfache Perl-Funktion schreiben, die diese Optionsliste mithilfe einer Schleife erzeugt und die Liste der Variablen $OPTIONS$ zuweist wie in Listing B.
In diesem Fall ist der Wert, welcher der Variablen $OPTIONS$ zugewiesen wird, eine benutzerdefinierte Perl-Subroutine. Diese Subroutine liest den Inhalt des Arrays @countries ein und erzeugt eine Reihe von <option>-Elementen, die dann an den umschließenden Codeblock zurückgegeben werden. Die Funktion parse() weist diesen Rückgabewert dem Platzhalter $OPTIONS$ zu, so dass das Ergebnis wie in Listing C aussieht.
Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…
Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…
Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.
Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…
Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…
Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…