Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ejemplo de Smarty

Estas en el tema de Ejemplo de Smarty en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy tratando de entender la forma de trabajo de Smarty modificando algunos ejemplos, pero no logro hacer lo que me propongo. Tengo un arreglo con ...
  #1 (permalink)  
Antiguo 12/09/2006, 15:02
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Ejemplo de Smarty

Estoy tratando de entender la forma de trabajo de Smarty modificando algunos ejemplos, pero no logro hacer lo que me propongo.

Tengo un arreglo con varios elementos, lo que quiero es imprimir los elementos del arreglo usando una plantilla.

Código PHP:
<?php

// load Smarty library
require('../libs/Smarty.class.php');

$smarty = new Smarty;

$smarty->template_dir 'C:\AppServ\www\test\smarty\templates';
$smarty->compile_dir 'C:\AppServ\www\test\smarty\templates_c';
$smarty->config_dir 'C:\AppServ\www\test\smarty\configs';
$smarty->cache_dir 'C:\AppServ\www\test\smarty\cache';

$color = array('black','white','orange');
$siguiente current($color);
while (
$siguiente!=false){
    
$smarty->assign('name',current($color));
    
$siguiente=next($color);
}

//$smarty->assign('name','Ned');

$smarty->display('../index.tpl');
?>
y esta es la plantilla
Código HTML:
{* Smarty *}

Color ahora es , {$name}!<br> 
Solo me imprime el ultimo elemento

Saludos::..
  #2 (permalink)  
Antiguo 12/09/2006, 15:45
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
dame una razon por la que tu codigo deberia imprimir algo mas que el ultimo elemento.
  #3 (permalink)  
Antiguo 12/09/2006, 19:07
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Código PHP:
$siguiente current($color);
while (
$siguiente!=false){
    
$smarty->assign('name',current($color));
    
$siguiente=next($color);

Va pasando entre los elementos del arreglo y asigandoselos a name para luego pasar a smarty... mmm aunque ahi esta la falla sobre escribe mmm

Pero como podria hacer para que imprima los demas elementos?

Saludos:...
  #4 (permalink)  
Antiguo 12/09/2006, 19:19
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Estimado, lee con calma el manual de Smarty

Lo que tu deberías hacer, por ejemplo, es asignar a través de la instancia Smarty (creada en PHP) una variable con el mismo array que contiene la información que quieres mostrar en el template (en este caso, los colores).

Luego, del lado de Smarty, tomas la variable y usas un foreach para recorrerla y mostrarla.

La idea es que del lado de "la lógica" (PHP) te desentiendas del lado de "la interfaz" (Smarty), por lo que la primera solo debe preocuparse en conseguir los datos y la segunda en representarlos donde deben.

Los datos de los colores ya los tienes, entrégalo a Smarty para luego trabajarlos desde ahí.

En PHP sería:

Código PHP:
$coloresPHP = array('black','white','orange');

// Al "representante" de Smarty en el entorno PHP le 
// dices que vas a crear una variable 'coloresSmarty' con 
// el contenido $coloresPHP
$smarty->assign('coloresSmarty',$coloresPHP);

$smarty->display('../index.tpl'); 
Y en Smarty:

Código PHP:

{foreach from=$coloresSmarty item=color}
 
Color ahora es  {$color}<br />
{/foreach} 
Lo que hiciste del lado de PHP fue un "puente" entre la lógica y la interfaz, a través de la variable "coloresSmarty".

¿Se entendió un poco más?

PD: les puse esos nombres a las variables para que quede bien claro que son variables distintas.

También es normal que se defina en Smarty la variable sin '$' y luego se la agregue... es parte de la sintaxis.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 12/09/2006, 19:23
Avatar de peperoni  
Fecha de Ingreso: febrero-2005
Mensajes: 24
Antigüedad: 19 años, 2 meses
Puntos: 0
Pues es muy buena la aclaración por que justamente me estaba preguntado como hacer algunas sentencias en Smarty... como por ejemplo para recorrer el arreglo puesto que yo pensaba que era puro HTML o CSS pero ya vi que debo leer un poco mas.

Gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.