Comencé por desarrollar un modulo principal que pudiera ir almacenando objetos y renderizarlos en el orden en que se agregan.
Lo llame velkan.php.
Esta clase se encargaría de ir agregando cada objeto. Tendría funciones generales que compartiría con las demás clases.
Parte del objetivo de este proyecto es tener controles que hagan las validaciones de formato, validaciones en formas en campos requeridos y similares. Otro objetivo era hacer combobox dependientes de manera sencilla. Era un obstáculo a superar, pero lo hice.
En un principio, cuando hice los primeros pasos, fue fácil. Cree primero el objeto form, y después el objeto input. Hice una prueba agregando a cada objeto la funcion render(), haciendo que el objeto form buscara en un arreglo todo objeto que tuviera el metodo render(), y lo ejecutaba, de la siguiente forma:
foreach ($this->objs as $obj){
if(method_exists($obj, "render")){
$render.=$obj->render();
}else{
$render.=$obj;
}
}
return $render;
De esta forma es sencillo ir agregando objetos y renderizarlos despues.
La primer prueba fue exitosa. La forma de generar un formulario quedo de la siguiente forma:
<?php
include_once 'velkan.php';
$velkan=new velkan(array("level"=>"","title"=>"Prueba"));
$form=new velkan_form();
$form->add_obj(new velkan_input(array("name"=>"prueba_input","label"=>"Prueba input")));
$velkan->add_obj($form);
$velkan->render();
?>
Esto generará el formulario siguiente:
Con el código siguiente:
<!DOCTYPE html>
<html>
<head>
<meta name="application-name" content="Saicom">
<meta name="author" content="Anwar Garcia">
<meta name="generator" content="Menos Codigo">
<link rel="stylesheet" type="text/css" href="lib/bootstrap/css/bootstrap.min.css" />
<script src="lib/jquery/jquery-1.8.3.min.js"></script>
<script src="lib/jquery/jquery.validate.js"></script>
<script src="lib/bootstrap/js/bootstrap.js"></script>
<script src="lib/js/general.js"></script>
<title>Prueba</title>
<script>$(document).ready(function(){$("#__MCFORM__1d67").validate();});</script>
</head>
<body>
<form name="__MCFORM__1d67" id="__MCFORM__1d67" class=" form-inline">
<label for="1077">Prueba input</label>
<input type="text" id="1077" name="prueba_input" class=" input-medium">
</form>
</body>
</html>
Fácil. Todo lo que hice fue crear tres clases, agregarle arrays para guardar objetos, y una función que devuelve strings para finalmente imprimirlos en pantalla. Otra vez, fácil.
Lo otro es que decidí pasar todo parámetro por arrays, casi todo objeto en su método __construct recibirá un array de parámetros. Aparte, tendrán sus respectivos métodos get y set de las distintas propiedades, por si se requieren funciones un poco más avanzadas, y para declarar variables he irles definiendo sus propiedades.
¿Qué hay del CSS y JavaScript?
No hay que inventar el agua caliente, aunque tal vez lo estoy haciendo con este framework. Para CSS voy a usar Bootstrap, y para JavaScript por supuesto que voy a utilizar jQuery, nada mas. Los controles fácilmente podrán llevar funciones de javascript, y también voy a usar el plugin validate para la validación de las formas, solo que Velkan lo hará más sencillo.
¿Ajax? por su puesto. Pensé mucho como debía de funcionar Ajax. Y decidí que se iban a poder declarar funciones en el PHP para que el Ajax después sólo ejecutara esas funciones, sera interesante. Sera como programar por eventos en VB.
¿Plantillas?
Yes. Podremos crear plantillas para no tener que hacer copiar y pegar cada vez. También tendrá dos archivos de configuración uno donde le decimos varias cosas como los archivos CSS y JS que deba cargar en cada página, y otro donde definimos los mensajes de error y textos en los botones.
Va a quedar muy bien.
prueba
ResponderEliminar