miércoles, 5 de agosto de 2009

PclTemplate::Separar el diseño de la programación

PclTemplate es una clase para manejar fácilmente plantillas. Puede leer plantillas por archivos de texto o por una cadena (string).
Vamos a hacer un ejemplo simple para ver cómo funcioma esta clase.
Primero descargamos los archivos de la página oficial http://www.phpconcept.net/pcltemplate/index.php
Descargamos la última versión que en estos momentos es 0.5
Empezemos:

Esta clase puede manejar varios tipos de "tokens"; estas son
  • Simples
  • De lista, tabla o arrays
  • Condicionales
  • Y de "includes"
Nuestro primer ejemplo será con las simples. Primero creamos la plantilla. Va a ser un simple html en la que necesitaremos el título y el usuario:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title><!--(titulo)--></title>
</head>
<body>
Bienvenido <!--(usuario)-->!
</body>
</html>

Vemos que las tokens se definen como comentarios.
Ahora, vamos a hacer el php que leerá la plantilla y nos dará los datos:

<?php
require_once('pcltemplate.class.php');

$plantilla = new PclTemplate();
$plantilla->parseFile('plantilla1.html');

$datos = array();
$datos['titulo'] = 'Probando la librería';
$datos['usuario'] = 'Invitado';

$resultado = $plantilla->generate($datos, 'string');
echo $resultado;
?>

Primero, incluimos la clase, creamos un objeto de PclTemplate y con parseFile('plantilla1.html') le indicamos que leeremos la plantilla "plantilla1.html";
Los datos son almacenados en arrays, entonces creamos un array y definimos los datos en base a las tokens.
Ahora, el resultado, debemos guardarlo en una "string" para poder mostrarlo. Creamos una variable $resultado y generamos el string.
Por último, hacemos un echo a la variable $resultado y nos dará lo siguiente:

Bienvenido invitado!
Se pueden definir cuantas tokens como se desee.
Ahora, algo muy útil, vamos a usar las tokens de listas:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title><!--(titulo)--></title>
</head>
<body>
<!--(list:usuarios)-->
<table border="1">
<tr>
<td>Nombre</td>
<td>Apellido</td>
</tr>
<!--(item)-->
<tr>
<td> <!--(nombre)--></td>
<td><!--(apellido)--></td>
</tr>
<!--(enditem)-->
</table>
<!--(endlist)-->
</body>
</html>

Con <!--(list:usuarios)--> decimos que vamos a trabajar con la lista usuarios.
<!--(item)--> y <!--(enditem)--> encierran a cada uno de los datos que representa cada lista, lo que está encerrado aquí se repetirá por cada item que tenga la lista.
Ahora el php:

<?php
require_once('pcltemplate.class.php');
$plantilla = new PclTemplate();
$plantilla->parseFile('plantilla1.html');

$datos = array();
$datos['titulo'] = 'Probando la librería';

$datos['usuarios'][0]['nombre'] = 'Pedro';
$datos['usuarios'][0]['apellido'] = 'Perez';

$datos['usuarios'][1]['nombre'] = 'María';
$datos['usuarios'][1]['apellido'] = 'Martines';

$datos['usuarios'][2]['nombre'] = 'Luis';
$datos['usuarios'][2]['apellido'] = 'Lozano';

$resultado = $plantilla->generate($datos, 'string');
echo $resultado;
?>

Lo que nos dará el siguiente resultado:

Nombre Apellido
Pedro Perez
María Martines
Luis Lozano

Esta clase es muy fácil de usar, y útil para separar la programación del diseño.
Para terminar les dejo un comprimido con los archivos del tutorial (incluye la librería): http://casinada.freetzi.com/?d=pclTemplate.rar

Les invito a http://www.phpconcept.net/pcltemplate/index.php, página oficial de la clase, ahí encontraran más ejemplos y un muy buen manual de uso.

Hasta la próxima!

No hay comentarios:

Publicar un comentario