Que es Smarty y como usarlo, un ejemplo. Tutorial 3
Que es Smarty y como usarlo, un ejemplo
Como lo dijimos en un tutorial pasado “Smarty es la herramienta clave para poder hacer la separación por capas, simplemente permite al programador separa el código php del html y usar una serie de etiquetas smarty”
Una vez instalado el wampserver, vamos a hacer nuestro primer desarrollo con smarty.
Nota (Regla): nunca crear nombres de carpetas o archivos empezando con mayuscula, nunca usar mayuscula siempre minuscula, aveces general problema al llamar archivos o carpetas desde otros lugares por la bendita mayuscula
1) Creamos una carpeta llamado trabajo en la ruta C://wamp/www/
2) Dentro de esta carpeta crearemos las siguientes carpetas:
- C://wamp/www/trabajo/cache/
- C://wamp/www/trabajo/configs/
- C://wamp/www/trabajo/images/
- C://wamp/www/trabajo/smarty/
- C://wamp/www/trabajo/templates/
- C://wamp/www/trabajo/templates_c/
- C://wamp/www/trabajo/varios/
Las carpetas cache, configs, smarty, templates, tempaltes_c son de uso exclusivo para smarty; en la carpeta images guardaremos mas adelante todas las imágenes, y en la carpeta varios, guardaremosmas adelante archivos de javascript, el gestor.php, archivos de estilo y muchas otras cosas.
3) Descargamos smarty desde aquí: http://www.smarty.net/download
Una vez descargado lo descomprimimos y ojo! Entramos a la carpeta libs y TODO lo que hay ahí (dentro de la carpeta libs) lo copiamos y lo pegamos dentro de la carpeta C://wamp/www/trabajo/smarty/ esos son los archivos necesarios, el resto de archivos que trae ese comprimido no son necesarios son ejemplos o demos de smarty
4) Crearemos un archivo llamado include.php en esta ruta: C://wamp/www/trabajo/include.php con lo siguiente:
<?php
define ('RUTA','http://localhost/trabajo/');
include_once('C:/wamp/www/trabajo/smarty/Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = 'C:/wamp/www/trabajo/templates';
$smarty->config_dir = 'C:/wamp/www/trabajo/configs';
$smarty->cache_dir = 'C:/wamp/www/trabajo/cache';
$smarty->compile_dir = 'C:/wamp/www/trabajo/templates_c';
?>
Lo anterior indica lo siguiente:
Definimos una variable RUTA que es la ruta vía web de nuestro proyecto “trabajo”.
- En la tercera línea incluimos la clase smarty la cual es esencial para todo el proyecto.
- En la cuarta línea creamos un nuevo objeto tipo smarty.
- En el resto de las líneas definimos los directorios smarty donde se va a ubicar información clave; por ejemplo definimos el directorio template_dir en la carpeta templates lo cual indica que ahí irán todos los archivos html, el directorio de templates_c que será donde se ubiquen los cache de los templates “pre” cargados para que la pagina cargue mas rápido y muchas otras cosas que en otros tutoriales explicaremos.
5) creamos un archivo index.php que será el controlador y el primer archivo que manejara la información
<?php
//cargamos las librerías de smarty
require('include.php');
class index {
public function display()
{
global $smarty;
//Muestra por pantalla todos los diferentes templates
$smarty->display('hola.tpl');
}
}
$call = new index();
$call->display();
?>
Lo anterior indica lo siguiente:
- En la línea de require, incluimos el archivo que anteriormente creamos.
- En la línea de class creamos una clase llamada index (todos los controladores se sugieren que sean clases para seguir el mismo lineamiento en todos los archivos y que sea de fácil manejo)
- En la línea de public function display lo que hacemos es que crearemos una función que será característica de todos los controladores que es donde decidimos que mostrar por pantalla en este caso, esa función tiene la línea global smarty, que indica que cogerá el objeto smarty que creamos en el include (debe ser global porque no está definida dentro de la clase, si no fuera de la clase) y por ultimo usando este objeto smarty usamos una función de smarty llamada display que lo que hace es que muestra por pantalla algún archivo .tpl o .html (son lo mismo) que se debe encontrar ubicado dentro del directorio de template que definimos anteriormente en include.php y que es el directorio “templates” en este caso coge un archivo llamado hola.tpl y que debe estar ubicado en C://wamp/www/trabajo/templates/hola.tpl el cual crearemos enseguida.
- Por ultimo cuando entramos desde el navegador a http://localhost/trabajo/index.php el navegador NO lee lo que hay por dentro de la clase, si no que lee la línea donde se incluye el include.php y luego salta hasta el final de la definición de la clase, y lee la línea donde creamos un nuevo objeto tipo index.php $call = new index(); y seguidamente llama la función display y ejecuta lo que hay allí dentro (mostrando finalmente lo que hay dentro de hola.tpl)
6) Creamos el archivo hola.tpl en la ubicación C://wamp/www/trabajo/templates/hola.tpl
<html>
<title></title>
<body>
hola
</body>
</html>
Este archivo simplemente muestra un mensaje de hola
7) entramos al navegador a esta pagina http://localhost/trabajo/index.php y vemos que sale el aviso de hola.
Aunque parece algo muy bobo y un poco complicado, son los primeros pasos muy muy escensiales para una buena programación php, el resto será repetir este proceso varias veces e ir agregando cosas.
