Foros del Web » Programando para Internet » PHP »

foreach en un archivo .hml

Estas en el tema de foreach en un archivo .hml en el foro de PHP en Foros del Web. Hola muy buenas, Tengo una duda y no se como solucionar un problema con un foreach para un archivo .hml Os pongo el script para ...
  #1 (permalink)  
Antiguo 23/12/2012, 03:17
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 4 meses
Puntos: 4
foreach en un archivo .hml

Hola muy buenas,

Tengo una duda y no se como solucionar un problema con un foreach para un archivo .hml

Os pongo el script para ver como lo podría hacer mejor:

web_pie.php
// Consulta
$R = $this->Bd->consultar("`script`","banners_pie_html","WHERE (activado='si' && tienda LIKE '%".Tienda."%') ORDER BY ordenar ASC");
while ($RR = $this->Bd->obtendatos($R))
{
$banners_pie_html[] = $RR;
}
$this->Bd->limpiaconsulta($R);

ob_start();
if (is_array($banners_pie_html))
{
foreach ($banners_pie_html as $value)
{
?>
<td width="5"></td>
<td align="right"><?= $value['script'] ?></td>
<?
}
}
$banners_pie_html = ob_get_clean();

include("web_pie_html.html");


web_pie.html
<table cellpadding="0" cellspacing="0">
<tr>
{{var foreach.from="banners_pie_html" key="key" items="value"}}
<td width="5"></td>
<td align="right">{{value['script']}}</td>
{{/foreach}}
</tr>
</table>


Como veis e puesto un tag para el foreach en el archivo .html, como podría resolver este tag en el archivo html del foreach con variable $banners_pie_html del php?

Si veis conveniente mejorar el script, os lo agradezco, por vuestra ayuda-

Muchas gracias.
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #2 (permalink)  
Antiguo 23/12/2012, 15:35
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 4 meses
Puntos: 4
Respuesta: foreach en un archivo .hml

E visto Que se podria reemplazar
{{var foreach.from="banners_pie_html" key="key" items="value"}} por

foreach ($banners_pie_html as $value)
{

Es correcto con preg_replace();?

Como sería?
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #3 (permalink)  
Antiguo 23/12/2012, 17:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: foreach en un archivo .hml

Para facilitarte, en la vista se puede usar partes de PHP, como if, elseif, else, foreach, while, for, do while, echo, print, entre otras. Lo importante de todo es que si estás usando MVC, debes tener claro donde se ejecuta todo, la lógica sabes que debe ir en el modelo y el enrutamiento en el controlador, en la vista solo debes usar aquellas cosas que no sean de lógica por lo que usar un foreach se puede lograr directamente con PHP. Es verdad que existen "template engine" como twig, pero usar en el tamplate también php es viable y no rompe con el concepto MVC.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 24/12/2012, 23:10
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 4 meses
Puntos: 4
Respuesta: foreach en un archivo .hml

Hola buenas,

Si. Exactamente es lo que quiero, pero me gustaría yo montarme un una librería para un mvc que e creado yo.

Ya qué todo respeto el controlador, el modelo pero veo que la vista me falta una librería para por ejemplo dentro de un foreach si existe una imagen para mostrarla, y bueno más utilidades para la vista.

Sí no tendré que crear una librería para is_file tipo {{img src="" border=""}} y más ...

Espero vuestra ayuda y seguramente haya gente que haya hecho su interface mvc que no quiera utilizar un framework .

Muchísimas gracias
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #5 (permalink)  
Antiguo 29/12/2012, 00:22
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 4 meses
Puntos: 4
Respuesta: foreach en un archivo .hml

Hola buenas estoy creando la libreria para que me interprete una condicion [if/elseif], casi lo tengo pero veo que no me funciona correctamente, me podéis ayudar?

$template = Código HTML:
HTML:
{{if $FOTO != ""}}
aa
{{elseif $FOTO == ""}}
bb
{{/if}}

PHP:
function var_if($template)
{
# {{if ...}} | {{elseif ...}} |{{/if}}
# ************************************************** *******************
$preg_match = '/{{if(.*)}}|{{elseif(.*)}}|{{(.*)if}}/i';
if (preg_match_all($preg_match, $template, $cortar, PREG_SET_ORDER))
{
if (is_array($cortar))
{
foreach ($cortar as $key => $value)
{
# Variable
# ************************************************** *******************
$var_if_original = $value[0];

# {{if ....}}
# ************************************************** *******************
if (stristr($value[0],"{{if "))
$if_original = $value[0];

# {{elseif ....}}
# ************************************************** *******************
if (stristr($value[0],"{{elseif "))
{
$elseif_original = $value[0];
}
# {{/if}}
# ************************************************** *******************
if (stristr($value[0],"{{/if}}"))
$close_if_original = $value[0];

# Conocer el interior del {{if }} hasta {{elseif }}
# ************************************************** *******************
if (!empty($if_original) && !empty($elseif_original))
{
$preg_match = '#'.$if_original.'(.*?)'.$elseif_original.'|'.$els eif_original.'(.*?){{/if}}#s';
if (preg_match_all($preg_match, $template, $cortar1, PREG_SET_ORDER))
{
if (is_array($cortar1))
{
foreach ($cortar1 as $value1)
{
$value1[0] = str_replace($elseif_original,'',$value1[0]);
$if_original = $value1[0];

# if
$value1[0] = str_replace('{{if ', "<? if (", $value1[0]);

$value1[0] = str_replace('}}', '){ ?>', $value1[0]);

$if_middle = $value1[0];

}
}
}
}

# Conocer el interior del {{elseif }} hasta {{/if }}
# ************************************************** *******************
if (!empty($elseif_original))
{
$preg_match = '#'.$elseif_original.'(.*?){{/if}}#s';
if (preg_match_all($preg_match, $template, $cortar1, PREG_SET_ORDER))
{
if (is_array($cortar1))
{
foreach ($cortar1 as $value1)
{
$elseif_original = $value1[0];

#elseif
$value1[0] = str_replace('{{elseif ', '<? }elseif (', $value1[0]);
$value1[0] = str_replace('{{/if}}', '<? } ?>', $value1[0]);
$value1[0] = str_replace('}}', '){ ?>', $value1[0]);

$else_middle = $value1[0];

}
}
}
}

if (!empty($if_middle) && !empty($else_middle))
{


ob_start();
$if_middle.$else_middle;
$if = ob_get_clean();

echo $if_middle.$else_middle."<br>";

$template = str_replace($if_original,$if, $template);
$template = str_replace($elseif_original,$elseif, $template);

$if_original = "";
$elseif_original= "";
$if_middle = "";
$else_middle = "";
$if = "";
$elseif = "";

}

}
}

}

return $template;
}
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------


Etiquetas: foreach, html, variables
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 05:53.