Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2012, 01:30
Avatar de pato12
pato12
 
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Aporte - Generar html dinámicamente

Hola!

Hace mucho que no paso por este foro, la verdad ni tengo tiempo pero ya me voy a poner más activo (si es que puedo) e iré actualizando los post (viejos) que más me preguntan.

Ahora quiero compartirles una herramienta que creé y me ayudó mucho a hacer webs, y que, combinado con un buen sistema mvc, es una gran ayuda.

Es muy parecido a jQuery, pero obviamente en php. La idea surgió porque yo uso mucho el mismo y me encanta la forma de como se crea y manipula el html (aclaro que me encanta a morir javascript ). Así que me pregunté, "se podría hacer algo parecido en php?" y surgió a los pocos días esto.

Yo siempre lo uso en html5 así que tiene mucho soporte.

Sin más que decir, el código y luego explico como se usa:

- Ver código (fdw ahora soporta menos caracteres así que no lo pongo acá D:!)

Modo de uso, muy simple si sabes jQuery

Código PHP:
Ver original
  1. <?php
  2.     // creamos un div y le agregamos texto
  3.     echo h("div")->text("mi texto");
  4.    
  5.    
  6.     // creamos un div, le agregamos texto y un poco de estilo
  7.     echo h("div")->text("mi texto")->css(array( "color" => "#999", "background" => "#EEE", "padding" => "15px"));
  8.    
  9.    
  10.     // creamos un div, le agregamos texto, un poco de estilo y una id
  11.     echo h("div")->text("mi texto")->css(array( "color" => "#999", "background" => "#EEE", "padding" => "15px"))->attr("id", "div-1");
  12.    
  13.    
  14.     // creamos un div, le agregamos texto, un poco de estilo, una id y una clase
  15.     echo h("div")->text("mi texto")->css(array( "color" => "#999", "background" => "#EEE", "padding" => "15px"))->attr("id", "div-1")->addClass("mensaje");
  16. ?>

Ahora sí, ya aprendimos a crear un div a agregarle cosas, como texto (OJO! es texto, no html).

Código PHP:
Ver original
  1. <?php
  2.     // creamos un div y le agregamos texto con html
  3.     echo h("div")->html("mi <strong>texto</strong> con html!");
  4. ?>

Ahí esta, texto con HTML!

Veamos como crear una web simple..

Código PHP:
Ver original
  1. <?php
  2.     require "html.php";
  3.  
  4.     // Creamos la etiqueta principal, html (con doctype html5), donde vamos a tener toda la web
  5.     $html = h("html", "html5")->attr("lang", "es")->append(
  6.         $head = h("head"), // creamos el head
  7.         $body = h("body") // creamos el body
  8.     );
  9.    
  10.     h("title")->text("mi web!")->appendTo($head); // Agreamos un titulo al head
  11.     h("style")->css(array(
  12.         "body" => array(
  13.             "background" => "#EEE",
  14.             "font-family" => '"Segoe UI", Tahoma'
  15.             ),
  16.         ".mensaje" => array(
  17.             "background" => "#CCC",
  18.             "padding" => "15px"
  19.         ),
  20.         ".diferenciar" => array(
  21.             "background" => "#F00"
  22.         ),
  23.         ".web" => array(
  24.             "width" => "900px",
  25.             "margin" => "20px auto",
  26.             "padding" => "15px"
  27.         ),
  28.         "h1, h2, h3" => array(
  29.             "margin" => "0",
  30.             "padding" => "0"
  31.         )
  32.     ))->appendTo($head); // Creamos un style y lo agreagamos al head
  33.    
  34.    
  35.     h("header")->append( // Creamos un header (etiqueta html5)
  36.         h("h1")->text("Mi web!"), // Agregamos un h1 con el titulo
  37.         h("h2")->text("Puro php!")->css("color", "#999") // Agregamos un h2 con un "eslogan"
  38.     )->addClass("web")->css("background", "#FFF")->appendTo($body); // Le damos una clase y estilos, y lo metemos en el body
  39.    
  40.     h("section")->appendTo($body)->append( // Creamos un section y lo agregamos al body (etiqueta html5)
  41.         $form = h("form", array("method" => "post", "action" => ""))->append( // Creamos un form y le damos propiedades
  42.             $ul = h("ul") // Creamos una lista
  43.         )
  44.     )->addClass("web"); // Le damos una clase
  45.    
  46.     for($i = 0; $i < 10; $i++)
  47.         h("li")->append( // Creamos un li para la lista
  48.             h("input", array("type" => "submit", "name" => "boton_" . $i))->val("Boton " . $i)->addClass($i % 2 != 0? "diferenciar" : "nodiferenciar") // Agregamos un submit y cada uno de por medio una "diferencia" (clase)
  49.         )->appendTo($ul); // Lo metemos a la lista
  50.        
  51.     $form->append(
  52.         h("input", array("type" => "submit", "name" => "borrar_diferencia"))->val("Borrar botones rojos"), // Agrego 1 boton
  53.         h("input", array("type" => "submit", "name" => "borrar_no_diferencia"))->val("Borrar botones no rojos"),
  54.         h("input", array("type" => "submit", "name" => "cambiar_titulo"))->val("Cambiar titulo por 'Hola mundo'")
  55.     );
  56.    
  57.     if($_POST){ // Si es que hay post...
  58.         switch(true){
  59.             case isset($_POST["borrar_diferencia"]):
  60.                     $html->find(".diferenciar")->remove(); // Agarramos todos los de class diferenciar y los borramos :D
  61.                 break;
  62.            
  63.             case isset($_POST["borrar_no_diferencia"]):
  64.                     $html->find(".nodiferenciar")->remove(); // Agarramos todos los de class nodiferenciar y los borramos :D
  65.                 break;
  66.            
  67.             case isset($_POST["cambiar_titulo"]):
  68.                     $html->find("h1:first")->text("Hola mundo")->reset();
  69.                 break;
  70.            
  71.             default:
  72.                 $value = array_values($_POST);
  73.                
  74.                 $html->find("section:first")->prepend( // Buscamos el primer section y le agregamos un div con el mensaje
  75.                     h("div")->html("Se presiono: " . $value[0])->addClass("mensaje")
  76.                 )->reset();
  77.                 break;
  78.         }
  79.     }
  80.    
  81.     echo $html; // Imprimimos la web!
  82. ?>
Ejemplo

Bueno ya en una respuesta pongo otro ejemplo que no alcanzan los caracteres D:

Espero que les haya gustado y les sea tan útil como me es a mí.

Gracias!
Saludos!
__________________
Half Music - www.halfmusic.com