Lo que el Helper hace a grandes razgos
Estructura del sistema
Hasta ahora en Preweb siempre se venia programando en forma directa. Desde el archivo del controlador se accedia a la base de datos tanto para modificar o acceder a la información y luego se la volcaba al navegador via el motor de templates. Los formularios se armaban "a mano", los selectores por medio de bloques luego de realizar las consultas. Siempre desde el controlador. Esto da mucho poder de materializar el programa de la forma que se quiera sin tener que pasar por intermediarios y todo siempre se resolvió trazando la linea mas directa entre el problema y la solución.
Sin embargo el problema que esta metodología acarrea es mucha pérdida de tiempo al programar ya que se duplica mucho código (Cada formulario se programa desde cero cada vez, o a lo sumo se copy pastea) y poca respuesta a cambios, ya que un simple agregar un nuevo campo a una tabla significa agregarlo en todos los formularios html, en todos los html donde se muestre, en todos los php que leen la bd, en todos los php que guardan en la bd y los idiomas de los label de los mismos
Hay una consulta sql llamada SHOW FULL FIELDS FROM [nombre_de_la_tabla]
que devuelve un arreglo con toda la información
sobre la declaración y la estrcutura de la tabla.
De esta forma podemos deducir cosas como la estructura de un formulario
y dependiendo
del tipo de datos elegir un campo acorde para mostrar. Se busca
eliminar la duplicación de código en los casos mas naturales. Y si
algo de la automatización no llega a cumplir lo que necesitamos, se puede hacer de la misma forma que siempre.
Preweb-Helper agregar tres elementos que se encuentran en la carpeta /include. El modelo, la vista (que es una extension de la clase Template) y los Fields o campos.
A la hora de construir un formulario automático se le solicita al modelo por una tabla (Si tiene una tabla por idiomas esta contemplado), este devuelve la estructura de la misma, nosotros se la pasamos a la vista y la vista arma el formulario basándose en las definiciones de los campos.
De la misma forma a la hora de guardar ese formulario en la BD el modelo interpretara que datos guardar y cuales no partiendo de su conocimiento sobre la estructura de la tabla.
La idea es básicamente esa: Ubicarnos en el controlador (El módulo de toda la vida del Preweb) y hacer de intermediario entre el modelo y la vista que intentarán ayudarnos lo mas posible en el proceso de acceder a la bd y de mostrar los datos en el navegador. La forma de comunicarnos con ellos es utilizando sus métodos, las configuraciones y convenciones y el arreglo $data
Armar un formulario de alta de datos simple (Un formulario de
contacto por ejemplo) seria algo tan sencillo como en el php poner:
$vista->setTemplate("contacto");
// Setea y prepara el template [modulo]_contacto.htm
$data = $modelo->getData();
//
Obtiene la estructura de la tabla
$data = $modelo->loadDefault($data); // Cargar valores por defecto
$vista->createForm($data);
//
Crear el formulario
$vista->parseTemplate();
// Parsear el formulario y enviarlo al navegador
Guardar esos datos puede hacerse con un simple
$data =
$modelo->validate();
// Validar datos, por defecto el modelo tomara el arreglo $_POST
if ($modelo->hasErrors($data)) // Si hay errores
{
$vista->setTemplate("contacto");
// Armar formulario de
nuevo
$vista->createForm($data);
$vista->parseTemplate();
}
else
{
$modelo->setData($data);
// De lo contrario
guardar en la BD
}
Paso siguiente: Que hace el Modelo?