Programación en castellano
Inicio > Tutoriales > Smarty
-Tutoriales

Smarty


Aplicación de funciones

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.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados