![]() |
[Inhalt] -> [Template] |
[info] |
|
Da CGI-Skripte in der Regel größere Mengen an HTML-Code ausgeben und die Verwendung der HTML-Methoden des Moduls CGI nicht besonders freundlich mit Web-Designern umgehen, bietet sich die Trennung von HTML-Code und Skript an.
HTML::Template stellt die Funktionalität zur Verfügung:
use CGI;
use HTML::Template;
my $q = CGI->new;
my $template = HTML::Template->new(filename => "/path/to/template");
my @loop; # fill the loop
foreach (method_to_generate_rows()) {
push @loop, { foo => $foo,
bar => $bar,
baz => $baz,
};
}
$template->param(
loop => [ @loop ], # TMPL_LOOP
name => $some_name, # TMPL_VAR
text => $some_text, # TMPL_VAR
bool => 1, # TMPL_IF
);
print $q->header();
print $template->output;
In der korrespondierenden HTML-Template werden die gesetzten Variablen vor der Ausgabe eingefügt:
<html>
<head><title>Something</title></head>
<body>
<!-- hier die Verwendung von Variablen -->
<p>Hier die Aufstellung von <TMPL_VAR NAME=name> und etwas Text:</p>
<p><TMPL_VAR NAME=text></p>
<!-- hier die Verwendung einer Schleife -->
<table>
<TMPL_LOOP NAME=loop> <!-- Schleifenanfang -->
<tr>
<td><TMPL_VAR NAME=foo></td>
<td><TMPL_VAR NAME=bar></td>
<td><TMPL_VAR NAME=baz></td>
</tr>
</TMPL_LOOP> <!-- Schleifenende -->
</table>
<!-- hier die Verwendung einer Abfrage -->
<TMPL_IF NAME=bool>
<p>Gib diesen Text aus</p>
<TMPL_ELSE>
<p>oder diesen</p>
</TMPL_IF>
</body>
</html>