Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/02/2009, 10:27
Avatar de SUSMO
SUSMO
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Respuesta: While para Smarty

Hola,

Ya he resuelto el tema y aquí os dejo la solución por si le pudiera ayudar a alguien. No soy una experta de smarty así que no se si ésta ha sido la mejor manera de crear un while, pero como me funciona... jeje

En la función _compile_tag de la clase de smarty Smarty_Compiler.class.php he añadido el siquiente código en el switch:
Código PHP:
switch ($tag_command) {
    case 'include':
        return $this->_compile_include_tag($tag_args);
................
    case 'while':
        $this->_push_tag('while');
        $res = $this->_compile_if_tag($tag_args);
        preg_match("/<\?php if (.*): \?>/",$res,$token);
        return "<?php while " . $token[1] . " ?>"; 
     case '/while':
        $_open_tag = $this->_pop_tag('while');
        return "<?php }?>";
............
}
Una vez añadido el nuevo tag a smarty su utilización en el template es la siguiente:
Código PHP:
     {assign var="cont" value="1"}
     {while (
$cont <= 5)}
    <
br />hola {$cont}
    {
assign var="cont" value=$cont+1}
     {/while} 
Sólo he hecho un par de pruebas simples pero confío que funcione para otras más complicadas.

Espero que pueda ser de ayuda.

Saludos!!
__________________
Perdida en el mundo del conocimiento