Foros del Web » Programando para Internet » PHP »

renderizar html php file_get_contents

Estas en el tema de renderizar html php file_get_contents en el foro de PHP en Foros del Web. PARECE UN POCO LARGO EL TEXTO, PERO NO ES DIFICIL DE ENTENDER..(EL TEMA NO ES COMPLICADO) ----------------------------------------------------------------------------------------------------------------------------------- hola una preguntar, quiero que masomenos me orienten ...
  #1 (permalink)  
Antiguo 14/03/2013, 20:51
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
renderizar html php file_get_contents

PARECE UN POCO LARGO EL TEXTO, PERO NO ES DIFICIL DE ENTENDER..(EL TEMA NO ES COMPLICADO)
-----------------------------------------------------------------------------------------------------------------------------------

hola una preguntar, quiero que masomenos me orienten igual algo masomenos tengo de como funcina.

en el momento de cuando se desarrolla algo en php, casi siempre se separa la logica de html...

en mi experiencia lo vi por primera vez, usando un framework, codeigniter. donde por un lado se extraian, los valores y se colocaban en una variable, ese array con muchas variables.se lo enviaba a una vista, en la vista, habia variables php. alguna funcion de codeigniter, hacia que se remplazaran. las variables , no recuerdo si en las vistas estaban asi...
por ejemplo

Código PHP:
<head>
<
title>
$titulo
</title>
</
head
en ningun momento abri en el HTML. entre title. NO ABRI ESO DE PHP "<?php" y "?>"
en mas, estos archivos se guardan en formato "HTML"
----------------------
lo que yo entiendo en este caso. de pagina, un poco estaticos.(lo digo que solo remplazan valores, dinamico seria, que el envie un resultado de una consulta de una tabla y no se cuantas celdas son entonces como hago? para hacer un HTML con celdas que no se, si lo hago asi "RENDERIZADO")

bueno siguiendo yo creo que ,

por un lado en el de PHP tengo los valores en un array.

con esta funcion de PHP,file get contents() , capturo todo lo que tiene una vista, es decir un HTML.

y finalmente con un foreach y una funcion de cadena creo , remplazo los valores que son iguales,

por ejemplo en una variable tenia esto

$titulo="hoy jueves 14 se lanzo el S4";

y en el HTML tenia

Código PHP:
<head>
<
title>
$titulo
</title>
</
head
quedara como resultado final


Código PHP:
<head>
<
title>
hoy jueves 14 se lanzo el S4
</title>
</
head
bueno , a ver, me equivoco en algo? esto es una manera casera de separar la logica de HTML? es una manera case de hacer plantillas como smarty? es una manera casera de hacer MVC como hacen los frameworks? en el caso de tener resultados de una tabla como lo haria..??

Última edición por aldo_rengo; 14/03/2013 a las 22:24
  #2 (permalink)  
Antiguo 15/03/2013, 05:08
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: renderizar html php file_get_contents

Realmente no controlo mucho del tema llevo muy poco con CI pero desde luego si que hay que poner los <?php echo $title ?>. Mira este ejemplo del manual de code igniter:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title><?php echo $title;?></title>
  4. </head>
  5. <body>
  6.     <h1><?php echo $heading;?></h1>
  7. </body>
  8. </html>

Hacer una substitución no creo que sea la mejor opción. Imáginate que tienes un blog y algún usuario escribe $title en el texto... o peor aún, que escriba $usuario y $password.

Creo que lo que hacen es enviar las variables a la vista, no hacer substitución.
  #3 (permalink)  
Antiguo 15/03/2013, 05:30
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: renderizar html php file_get_contents

Cita:
Iniciado por aldo_rengo Ver Mensaje
bueno , a ver, me equivoco en algo? esto es una manera casera de separar la logica de HTML? es una manera case de hacer plantillas como smarty? es una manera casera de hacer MVC como hacen los frameworks? en el caso de tener resultados de una tabla como lo haria..??
Esta función te puede dar un buen ejemplo de como armar lo que necesitas:

Código PHP:
Ver original
  1. <?php
  2.  
  3. /**
  4.   *
  5.   */
  6. function aplicarTemplate($tpl_file, $vars = array(), $include_globals = true)
  7. {
  8.   extract($vars);
  9.   if ($include_globals) extract($GLOBALS, EXTR_SKIP);
  10.   ob_start();
  11.   require($tpl_file);
  12.   $applied_template = ob_get_contents();
  13.   return $applied_template;
  14. }
  15.  
  16. ?>

el primer parametro es tu template, el segundo tus variables y el tercero por si quieres utilizar variables globales.

No es lo ideal, pero es simple.

Lo utilizas $miTemplate = aplicarTemplate('template.php', $miArray);
Y luego lo sacas con un echo $miTemplate;

La marcación en el template deberá ser del tipo <?php $variable; ?> o si lo prefieres <?=@$variable; ?>

Si tienes un array anidado, con foreach($array as $item){ echo $item; }

Recuerda que para no ensuciar el template, puedes usar esta sintaxis:

Código PHP:
Ver original
  1. <div id="nombre">
  2.   <p><?=@$variable1; ?>
  3.   <?if(@$variable2) : ?>
  4.        <?foreach($variable2 as $item) : ?>
  5.              <p><?=@$item;?></p>
  6.        <?endforeach; ?>
  7.   <?endif; ?>
  8. </div>

Saludos
  #4 (permalink)  
Antiguo 15/03/2013, 10:23
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: renderizar html php file_get_contents

Cita:
Iniciado por alyciashape Ver Mensaje
Realmente no controlo mucho del tema llevo muy poco con CI pero desde luego si que hay que poner los <?php echo $title ?>. Mira este ejemplo del manual de code igniter:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title><?php echo $title;?></title>
  4. </head>
  5. <body>
  6.     <h1><?php echo $heading;?></h1>
  7. </body>
  8. </html>

Hacer una substitución no creo que sea la mejor opción. Imáginate que tienes un blog y algún usuario escribe $title en el texto... o peor aún, que escriba $usuario y $password.

Creo que lo que hacen es enviar las variables a la vista, no hacer substitución.
ah si, es como si hicieron un include, al archivo, incluyendo las varibles php..
PERO LAS VISTAS SI O SI TIENEN QUE TENER, EXTENSION PHP.
VI ALGUNOS CASOS QUE LAS VISTAS TIENEN ARCHIVO html, AHORA COLOCO UNOS EJEMPLOS... PERO A VER... ESTAS COSAS LOS USAN USTEDES, DE USAR file_get_contents, "CHUPAN" EL HTML Y HACEN UN HTML, CON VARIABLES=?
O COLOCAN HTML Y PHP JUNTOS TODO MEZCLADO?
  #5 (permalink)  
Antiguo 15/03/2013, 10:43
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: renderizar html php file_get_contents

aca hay un ejemplo de lo que digo eso de renderizar....

aca la funcion que recibe el nombre del HTML, LO REMPLAZA, es imposible que de acuerdo al nombre de la variable, la vista, en este caso son HTML, tome el mismo nombre y coloque su valor

la funcion php

Código PHP:
function renderizar($master){
    
header("content-type: text/html; charset=utf-8");
    
$master file_get_contents($master);
    foreach(
$this->insert as $a => $b){
        
$master str_replace('<render:'.$a.' />',file_get_contents($b),$master);
    }
    foreach(
$this->bloque as $a => $b){
        
$block preg_replace('/.*?<render:'.$a.'>(.*?)<\/render:'.$a.'>.*/su','$1',$master);
        
$c '';
        for(
$i=0;$i<$b;$i++){
            
$f str_replace($a.':',$a.$i,$block);
            
$c .= $f;
        }
        
$master preg_replace('/<render:'.$a.'>.*?<\/render:'.$a.'>/su',$c,$master);
    }
    
$master preg_replace('/<render:.+?>.*?<\/render:.+?>/su','',$master);
    
$master preg_replace('/<render:([[:alnum:]]|_)+? \/>/u','',$master);
    foreach(
$this->render as $a => $b){
        
$master str_replace('$'.$a.';',$b,$master);
    }
    return 
$master;

esto es una vista, un archivo HTML, en los VALUES del formulario tiene los valores que seran remplazados

Código PHP:
<a href="$root;locales" class="bt_red" style="float:right; position:relative; margin-top:-40px;"><span class="bt_red_lft"></span><strong>volver [x]</strong><span class="bt_red_r"></span></a>
<
form action="" enctype="multipart/form-data" method="post" class="niceform" style="padding-bottom:15px; float:left; display:inline; width:100%;">
    <
dl>
        <
dt>nombre:</dt>
        <
dd><input type="text" name="nombre" value="$nombre;" /></dd>
    </
dl>
    <
dl>
        <
dt>ubicación:</dt>
        <
dd><select name="ubi" style="width:207px;">
            <
option value="$ubi;">$ubi;</option>
            <
option value="NIVEL S">NIVEL S</option>
            <
option value="NIVEL PB">NIVEL PB</option>
            <
option value="NIVEL 1">NIVEL 1</option>
            <
option value="NIVEL 2">NIVEL 2</option>
        </
select></dd>
    </
dl>
    <
dl>
        <
dt>web:</dt>
        <
dd><input type="text" name="web" value="$web;" /></dd>
    </
dl>
    <
dl>
        <
dt>email:</dt>
        <
dd><input type="text" name="email" value="$email;" /></dd>
    </
dl>
    <
dl>
        <
dt>tel:</dt>
        <
dd><input type="text" name="tel" value="$tel;" /></dd>
    </
dl>
    <
dl>
        <
dt><img src="$ruta;locales/logos1/$codigo;.jpg" alt="" /></dt>
        <
dd><input type="file" name="logo1" /><br/>JPG 86 x 86 px</dd>
    </
dl>
    <
dl>
        <
dt><img id="logo2" src="$ruta;locales/logos2/$codigo;.jpg" alt="" /></dt>
        <
dd><input type="file" name="logo2" /><br/>JPG 102 x 59 px</dd>
    </
dl>
    <
render:foto>
    <
dl>
    <
input type="hidden" name="flag_big" id="flag_big" value="locales/fotos/$foto:name;.jpg"  />
        <
dt><a href="?delfoto=$foto:id;" style="margin-left:156px;" class="bt_red"><span class="bt_red_lft"></span><strong>[x]</strong><span class="bt_red_r"></span></a>
        <
img src="$ruta;locales/fotos/$foto:name;.jpg" alt="" style="width:100px;" /></dt>
        <
dd><input type="file" name="foto_$foto:id;" />
        <
br/>JPG 600 x 395 px</dd>
    </
dl>
    </
render:foto>
    <
render:nofoto>
    <
dl>
    <
input type="hidden" name="flag_big" id="flag_big"  />
        <
dt>foto:</dt>
        <
dd><input type="file" name="foto" /><br/>JPG 600 x 395 px</dd>
    </
dl>
    </
render:nofoto>
    <
dl>
        <
dt><input type="hidden" name="fotos" value="$fotos;" /><input type="hidden" id="codigo" name="codigo" value="$codigo;" /></dt>
        <
dd><input type="submit" value="guardar cambios" style="width:200px;" /></dd>
    </
dl>
        <
div style="float:left; display:inline; width:100%;">
            <
render:rubros>
            <
div style="float:left; display:inline; width:270px;">
                <
input type="checkbox" name="rubros[]" value="$rubros:id;" id="local_$rubros:id;" $rubros:checked; /> <label for="local_$rubros:id;">$rubros:nombre;</label>
            </
div>
            </
render:rubros>
        </
div>
</
form

Etiquetas: html, renderizar, resultados, tabla, 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 23:57.