Foros del Web » Programando para Internet » PHP »

Duda con template

Estas en el tema de Duda con template en el foro de PHP en Foros del Web. Esto es algo que no he intentado y por eso me da problemas encontrarle la solución. Tengo este template html: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver ...
  #1 (permalink)  
Antiguo 31/05/2010, 12:13
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 13 años, 10 meses
Puntos: 281
Duda con template

Esto es algo que no he intentado y por eso me da problemas encontrarle la solución. Tengo este template html:

Código HTML:
Ver original
  1. <table border="0" cellspacing="0" cellpadding="0">
  2.   <tbody>
  3.     <tr>
  4.       <td valign="top"><span class="log_in_label"> **info[label]</span></td>
  5.       <td>**info[valor]</td>
  6.     </tr>
  7.   </tbody>

Lo que quiero es meter el contenido de un array tipo:


Código SQL:
Ver original
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [label] => lable1
  6.             [valor] => valor1
  7.         )
  8.     [2] => Array
  9.         (
  10.             [label] => lable2
  11.             [valor] => valor2
  12.         )
  13.  
  14. )

en las lineas de la tabla. si tuviera solamente:

Código HTML:
Ver original
  1. <tr>
  2.    <td valign="top"><span class="log_in_label"> **info[label]</span></td>
  3.    <td>**info[valor]</td>
  4. </tr>

sería muy fácil hacerlo con un str_replace(), pero no se como saca esa parte solamente del template. Me imagino que con expresiones regulares nunca he trabajado con ellas. ¿Cómo se podría hacer?
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #2 (permalink)  
Antiguo 31/05/2010, 12:16
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años
Puntos: 334
Respuesta: Duda con template

Código PHP:
Ver original
  1. <?php
  2. class Template
  3. {
  4.     private $filename = "";
  5.  
  6.     public function __construct($filename)
  7.     {
  8.         if(file_exists($filename)){
  9.             $this->filename = $filename;
  10.         }else{
  11.             throw new Exception("Template no encotrado");
  12.         }
  13.     }
  14.     public function render(array $data)
  15.     {
  16.         if(!empty($data)){
  17.             foreach($data as $key => $value) $$key = $value;
  18.             $template = file_get_contents($this->filename);
  19.             $template = str_replace("'", "\'", $template);
  20.             $template = preg_replace('%\{([\w-]+?)\}%', "'.$$1.'", $template);
  21.             eval("\$template = '$template';");
  22.             return $template;
  23.         }else{
  24.             return file_get_contents($this->filename);
  25.         }
  26.     }
  27. }


aunque esto te reemplaza las variables entre {}

ej

Código HTML:
Ver original
  1. <div>{variable}</div>

Código PHP:
Ver original
  1. <?php
  2. $template = new Template("template.htm");
  3. echo $template->render(array("variable" => "foobar"));
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 31/05/2010, 12:48
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 13 años, 10 meses
Puntos: 281
Respuesta: Duda con template

Gracias pero no es lo que necesito ya que lo que quiero es hacer esto:

Código HTML:
Ver original
  1. <tr>
  2.    <td valign="top"><span class="log_in_label"> **info[label]</span></td>
  3.    <td>**info[valor]</td>
  4. </tr>

dependiendo de la cantidad de valores en el array. Creo que al final voy a tener que usar eso solamente como el template.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...

Etiquetas: template
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:38.