Smarty

Smarty tiene muchas funciones �tiles, las cuales se pueden utilizar directamente en la plantillas. Tienen una estructura y construcci�n diferente a sus correspondientes de PHP. Primero, los nombres de las funciones son colocados (as� como las variables) entre claves. Segundo: los par�metros no se colocan entre par�ntesis, sino se escriben en forma id�ntica como se hace con los atributos en HTML � colocando el nombre y el valor despu�s del signo de igualdad.

La funci�n include() aplicada en PHP que en el script tomar�a la forma:

include ("file.txt");

en la plantilla de Smarty se ver�a as�:

{include file="file.txt"}

Adem�s, ciertas funciones tienen tags de apertura y cierre, por ejemplo, {literal} presentada anteriormente. Como ya conocemos la informaci�n b�sica sobre las funciones, podemos aplicarlas en nuestra plantilla.

Intentemos transferir la lista de canciones en forma de tabla, y no de cadena. El �ndice de canciones lo colocamos en un array asociativo, donde las claves indican el t�tulo de la canci�n, y el valor � el tiempo de duraci�n (esto requiere cambios dentro del archivo sgtpep.php) Para leer los datos de un array de este tipo, utilizaremos la funci�n {foreach}, la cual crea un bucle, que estar� regresando, consecutivamente, todos los elementos del array.

Listado 4: Fragmento modificado de la plantila album.tpl
...
<table>
  <tr>
    <td style="vertical-align: top"><img src="{$albumCover}" alt="" /></td>
    <td><b>�ndice de canciones: </b><br />
    {foreach key="songTitle" item="songTime" from=$albumSongs name="songs"}
    {$smarty.foreach.songs.iteration}. {$songTitle} {$songTime}<br />
    {/foreach}</td>
    <td><b>Aporta  la calificaci�n sobre el �lbum:</b><br />
    <form method="get" action="vote.php">
    {html_options values=$points output=$points name="points"}<br />
    <input type="submit" value="Vota" />
    </form>
  </tr>
</table>
...

Observemos dentro del Listado 4, donde se presentaron las funciones utilizadas en nuestra plantilla. Para empezar, abrimos la funci�n y definimos sus par�metros, diremos algo a continuaci�n. El primero de ellos (key) define una variable a la que asignaremos la clave del elemento actual del array, el segundo (item) � variable a la que asignaremos el valor del elemento. El siguiente atributo (from) es el nombre del array sobre el que estaremos operando. El �ltimo (name) define el nombre de nuestro bucle (no es imprescindible, pero veremos en un momento, es �til). En la siguiente parte del c�digo, tiene lugar la visualizaci�n de las variables, introduciendo simplemente sus nombres a la plantilla. Conviene prestar atenci�n a la primera variable � {$smarty.foreach.songs.iteration}. Es una variable de entorno, sobre la que escrib� m�s en la secci�n �Variables de entorno�. Gracias a ella podemos obtener el n�mero de iteraci�n actual. Al final se cierran las funciones. De esta forma sencilla obtuvimos, al mismo tiempo, el �ndice numerado de canciones junto con sus tiempos de duraci�n � todo gracias a tres l�neas de c�digo. �Hay todav�a alguien a quien no le gusta Smarty? Prep�raos para algo todav�a mejor.

A�adamos elementos extras a nuestra p�gina de ejemplo � calificaci�n del �lbum. Para este prop�sito necesitaremos una forma para votar, adem�s del script correspondiente que contar� los votos y almacenar� los resultados. La forma m�s sencilla es insertar una combo box en la p�gina, que ocupa menos espacio que los campos de selecci�n. Supongamos que a cada disco le vamos a asignar el rango de calificaciones del 1 al 6. Para generar la lista y el formulario, podr�amos escribir un script en PHP, pero �para qu�? Smarty har� eso por nosotros.

La lista completa ser� creada con la ayuda de la funci�n llamada {html_options}. La funci�n tiene tres par�metros interesantes. El primero es values, al que hay que asignarle un array con valores que ser�n las opciones de la lista. El segundo es el output, que tambi�n exige un array que contenga elementos desplegados en la lista. El �ltimo atributo es name, que define el nombre de la lista. Todo el c�digo que crea el formulario se presenta en el Listado 4. La combo box puede verse en la Figura 5.

Figura 5. Página después de haber enriquecido la plantilla con funciones

Nos falta una cosa para que la combo box pueda funcionar correctamente: el array con las calificaciones (para definir los valores y nombres de las posiciones de la lista utilizaremos los mismos datos). Debemos definirla en el archivo sgtpep.php con la ayuda del m�todo assign.

.�Variables de entorno

La variable {$smarty} es una variable reservada. Gracias a ella tenemos acceso a mucha informaci�n sobre los temas de Smarty, por ejemplo, el nombre de la plantilla procesada actualmente, y no s�lo eso. Con su ayuda podemos recibir diferentes variables de entorno. Si deseamos desplegar el valor de la variable $id, que fue transferida por el navegador por medio del m�todo POST, es suficiente escribir {$smarty.post.id}. Aplicamos este esquema de manera anal�ga, si deseamos tener acceso a la informaci�n sobre el servidor (por ejemplo, {$smarty.server.SERVER_NAME}), sesi�n (por ejemplo, {$smarty.session.id}), etc.

Es interesante la variable {$smarty.now}, en la que se almacena la fecha y el tiempo actual del sistema Unix.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO