|
|
|||||||||||||||||||||||||
|
IntroducciónEsto no se puede considerar exactamente un tutorial acerca de como utilizar el módulo HTML::Template, es más bien una introducción rápida a las cosas que puedes hacer con este módulo y porque debes de preferir usar templates a código HTML metido en tu script de perl. HTML::Template y CGI.pmEl módulo HTML::Template nos da una gran posibilidad de unirlo junto al módulo CGI.pm, pasando el objeto CGI.pm buscando variables para llenar el template. Veamos un ejemplo rápido, lo primero que vamos a hacer es crear dos templates: comida1.tmpl <form action="comida.pl" method="post"> Este primer template tiene una simple forma. comida2.tmpl <p>Hola <b><TMPL_VAR NAME=NOMBRE></b>. Sabemos que tu comida favorita es <b><TMPL_VAR NAME=COMIDA></b>. Este segundo template es el que vamos a utilizar para desplegar la información que nos hayan mandado desde la forma. Y ahora tenemos que hacer el script. comida.pl use CGI; my $cgi = CGI->new; print $cgi->header; if ($cgi->param('nombre') && $cgi->param('comida')) { my $t = HTML::Template->new(filename => "$template.tmpl", associate => Lo que hacemos es sencillo. Primero creamos un nuevo objeto de CGI. Checamos si tenemos las variables "nombre" y "comida". Si están entonces desplegamos el template comida2, de lo contrario el de comida1. Luego hacemos un objeto de HTML::Template, al que mandamos la variable "filename" con el nombre del template, y la variable "associate" al que mandamos nuestro objeto CGI. Ahora nuestro módulo HTML::Template hace todo el trabajo y su magia, y listo, tenemos nuestro template con las variables sustituidas correctamente. HTML::Template y DBIYa sabemos como podemos fusionar el módulo Template con CGI.pm, ahora veamos como podemos hacerlo con nuestro DBI. Digamos que queremos sacar unos datos de nuestro database y queremos desplegarlo, es sumamente sencillo con HTML::Template. Veamos el código de nuestro script: use DBI; my $cgi = CGI->new; $t->param(ROWS => $dbh->selectall_hashref('SELECT id, nombre, precio FROM productos')); $dbh->disconnect; print $cgi->header; Veamos lo que estamos haciendo. Iniciamos objetos para CGI, DBI y HTML::Template. Luego llamamos la función "param" de Template, a la cual mandamos una referencia de un hash creado por el módulo DBI en la variable "ROWS" al ejecutar el query que queremos. Muy bien, ahora veamos como debe de estar nuestro template "db.tmpl" para desplegar bien los campos que recibimos del database. db.tmpl <table border="1"> <TMPL_LOOP ROWS> </table> Vemos como hacemos un loop con el contenido de ROWS, la cual iria desplegando cada variable recibida del database. Fácil ¿no? ConclusionesComo vimos, esto sólo fue un vistazo rápido a lo que podemos hacer con HTML::Template, vemos como es realmente sencillo usarlo. La ventaja que nos da es que podemos separar como vimos el código del diseño, pues podemos editar cualquer template sin tener que editar el script.
Documentación de HTML::Template Este artículo fue basado en using CGI, DBI and HTML::Template (a mini tutorial with example code) de Perl Monks.
|
||||||||||||||||||||||||
|
|||||||||||||||||||||||||