¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Introducción a HTML::Template

por Uriel Lizama

Introducción

Esto 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.pm

El 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">
<p>Tu nombre: <input type="text" name="nombre"
value="<TMPL_VAR NAME=NOMBRE>"></p>
<p>Tu comida favorita: <input type="text" name="comida"
value="<TMPL_VAR NAME=COMIDA>"></p>
<p><input type="submit"></p>
</form>

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;
use HTML::Template;

my $cgi = CGI->new;
my $template;

print $cgi->header;

if ($cgi->param('nombre') && $cgi->param('comida')) {
$template = 'comida2';
} else {
$template = 'comida1';
}

my $t = HTML::Template->new(filename => "$template.tmpl", associate =>
+ $cgi);
print $t->output;

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 DBI

Ya 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;
use CGI;
use HTML::Template;

my $cgi = CGI->new;
my $dbh = DBI->connect('dbi:mysql:xxxx:localhost', 'xxxx', 'xxxx');
my $t = HTML::Template->new(filename => 'db.tmpl');

$t->param(ROWS => $dbh->selectall_hashref('SELECT id, nombre, precio FROM productos'));

$dbh->disconnect;

print $cgi->header;
print $t->output;

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">
<tr><th>ID</th><th>NOMBRE</th><th>PRECIO</th></tr>

<TMPL_LOOP ROWS>
<tr>
<td><TMPL_VAR NAME=ID></td>
<td><TMPL_VAR NAME=NOMBRE></td>
<td><TMPL_VAR NAME=PRECIO></td>
</tr>
</TMPL_LOOP>

</table>

Vemos como hacemos un loop con el contenido de ROWS, la cual iria desplegando cada variable recibida del database. Fácil ¿no?

Conclusiones

Como 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.


Mayores informes

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.

¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License