¿Qué es Smarty para PHP y cómo usarlo?

¿Qué es Smarty?

Smarty es un motor de plantillas para PHP. ¿Qué quiere decir esto? Separa la lógica de programación y la vista. O lo que es lo mismo, PHP del código HTML.

Smarty trabajo con su propio sistema de etiquetas que es muy similar a las usadas para PHP. La diferencia es que usa llaves.

{if $a ==1}
Correcto
{/if}

Es igual a:

<?php 
if ($a == 1) {
    echo 'Correcto';
}
?>

El uso de motores de plantilla crea un poco de controversia. Hay quienes piensan que el uso de éstos no es necesario en PHP, ya que su código es muy sencillo como para tener que utilizarlos. Y no les faltán razón. Luego están los que defienden su uso. Yo, estoy en el centro, ya que Smarty ofrece mucho más que un motor de renderizado, ofrece tambien un sistema de cache bastante bueno y flexible. Eso sí, hay que saber utilziarlo.

Actualmente, PrestaShop usa Smarty para renderizar todas sus plantilla por ejemplo. Su uso es muy extendido y tiene una documentación realmente buena.

Instalación de Smarty

Antes, me descargaba Smarty cada vez que empezaba un proyecto nuevo. Ahora gracias a Composer, lo tengo siempre actualizado y lo instalo con una sola linea de código desde la terminal:

composer require "smarty/smarty"

O desde composer.json

"require": {
"smarty/smarty": "~3.1@dev"
}

De todos modos, si no usais Composer, no es problema, la gente de Smarty tiene el proyecto en Github, si quereís descargarlo directamente podeís hacer clic aquí.

Configuración de Smarty

Dependiendo de como hayamos instalado Smarty, incluiremos unos archivos u otros.

Si ha sido vía composer, incluiremos el fichero autoload.php que está en la carpeta vendor:

include('vendor/autoload.php');

Si nos lo hemos descargado, la carpeta que debemos incluir en nuestro proyecto es lib. E incluimos el fichero siguiente en nuestro proyecto:

include('lib/Smarty.class.php');

Con esto, ya tendriamos Smarty listo para enviarle datos.

El paso siguiente es configurar las carpetas donde trabajará Smarty.

$smarty->setTemplateDir('templates/');
$smarty->setCompileDir('templates_c/');
$smarty->setConfigDir('configs/');
$smarty->setCacheDir('cache/');

Estos son los nombre que por defecto Smarty buscará en nuestro servidor. No está demás saber que el directorio templates_c y caché deben tener permisos de escritura.

Podemos cambiar el nombre de las diferentes carpetas por el que a nosotros nos apetezca.

Por último, instanciamos el objeto:

$smarty = new Smarty();

Crear una vista en Smarty

En este ejemplo, crearé la vista hola.tpl en el directorio templates. Su contenido sería el siguiente:

Hola {$usuario}, ¿qué tal?

Aquí, ya podemos ir viendo que en algún momento le pasaremos una variable llamada usuario que contendrá algo de información.

En nuestro fichero index.php, donde ya tenemos incluido Smarty y configurado las rutas, empezaremos a asignar valores, en este caso, solo uno: usuario. Lo asignamos de la siguiente manera:

$smarty->assign('usuario','Daniel Lucia');

Decir, que podemos pasar cualquier tipo de variable: array, string, objetos… Teniendo nociones básicas de PHP sabreis tratar esos datos en la vista.

Y para finalizar, renderizamos:

$smarty->display('hola.tpl');

La salida sería:

Hola Daniel Lucia, ¿qué tal?

Como veis, es extremadamente sencillo. Tambien hay que reconocer que esto es un ejemplo básico de Smarty. Pero las posibilidades son infinitas.

El código completo de index.php sería el siguiente:

include('vendor/autoload.php');
$smarty = new Smarty();
$smarty->setTemplateDir('templates/');
$smarty->setCompileDir('templates_c/');
$smarty->setConfigDir('configs/');
$smarty->setCacheDir('cache/');
$smarty->assign('usuario','Daniel Lucia');
$smarty->display('hola.tpl');

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.