Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2012, 19:30
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 3
Uso de templates con html

Hola!

Tengo una pequeña clase php que me permite usar plantillas de forma bastante facil, es esta.

Código PHP:
class TemplateClass{
    
    private 
$_dir           'template/';
    private 
$_file_ext        '.tpl';
    private 
$_vars        = array(); 
    private 
$_delimiters     = array('{''}'); 
    
    public function 
Assign($name$value){
        if(!
array_key_exists($name$this->_vars))
            
$this->_vars[$name] = $value;
    }
    public function 
GetAssign($name){
        return 
$this->_vars{$name};
    }
    public function 
Template($file){ 
        if( 
$output = @file_get_contents($this->_dir.$file.$this->_file_ext)){
            foreach(
$this->_vars as $name => $value){
                
$output str_replace($this->_delimiters[0].$name.$this->_delimiters[1], $value$output); //recorremos todo el archivo para cambiar las palabras con los delimitadores a su respectiva traduccion
            
}
            return 
$output;
        }
        else 
            die(
"La plantilla no existe."); 
    }

La forma de uso es bastante simple:
Creo un objeto
$plantilla = new TemplateClass();

Asigno las variables
$plantilla->Asign("variable","valor a cambiar")

Y muestro
$plantilla->Template->("plantilla.tlp");

Todo esto me funciona perfectamente, el problema es cuando por ejemplo, tengo una plantilla para mostrar resultados de la bd y quiero que esta se repita tantas veces como resultados tenga.

Lo estoy haciendo de esta manera:

Código PHP:
$tlpHeader = new TemplateClass();
$tlpFooter = new TemplateClass();
$tlpCont = new TemplateClass();
$tlpPreg = new TemplateClass();

foreach (
$preDAO->getListaPregunta() as $preg){
     
// Esta es la plantilla donde le doy forma a los resultados
    
$tlpPreg->Assign("PREGUNTA",  $preg->getPregunta());
     
// Y aqui, le pasto la plantilla con la forma de los resultados y lo  muestro en la pagina
    
$tlpCont->Assign("PREGUNTAS"$tlpPreg->Template("pregunta"));
}

$tlpContenido = new TemplateClass();
$tlpContenido->Assign("HEADER"$tlpHeader->Template("header"));
$tlpContenido->Assign("CONTENIDO"$tlpCont->Template("content"));
$tlpContenido->Assign("FOOTER"$tlpFooter->Template("footer"));

echo 
$tlpContenido->Template("lista_preguntas");
?> 
Funciona en cierta medida... solo me muestra un resultado ¿Que debo hacer?.