Casos comunes
A continuación algunos ejemplos de soluciones a problemas comunes partiendo de un módulo standard de la gestión del Preweb-Helper
Ejemplo básico de código
- Quitar Ejemplos
- Quitar un campo del formulario para llenarlo manualmente, Ejemplo: Fecha de hoy en la noticia
- Quitar un campo del formulario para llenarlo manualmente pero solo al insertar, Ejemplo: Fecha de hoy en la noticia y que no cambie al modificar, sin embargo, queremos poder verla al modificar
- La noticia tiene un campo "imagen" donde puede subirse un archivo, y la miniatura debe redimensionarse a 200x100 pixeles maximo
- Eliminar elementos en cascada. Ejemplo: La noticia tiene imágenes y hay una tabla mimg_imagen con un id_mno_noticia
- Errores Personalizados de validación. Ejemplo: No permitir que se inserte una noticia con fecha mayor al dia de hoy
/**
* @desc Muestra la pagina para dar de alta un registro
*/
function noticia_nuevo()
{
global $modelo, $vista, $db;
$vista->setTemplate("editar");
$data = $modelo->getData();
$data = $modelo->loadDefault($data);
$vista->excludeField($data,"fecha"); //Quitamos el campo del data para que no llegue al formulario
$vista->excludeField($data,"fecha"); //Quitamos el campo del data para que no llegue al formulario
$vista->set_var("titulo","[{7900|}]");
$vista->createForm($data);
$vista->parseTemplate();
}
/**
* @desc Funcion que guarda los datos del registro.
*/
function noticia_insertar($save=0)
{
global $modelo, $vista;
$data = $modelo->validate();
//Errores personalizados
if (strtotime(cambiaf_a_mysql($data["fecha"]["Value"])) > strtotime($modelo->now())){ //Comparar Fechas
$vista->throwError($data,"fecha","90002"); //Envio el error con texto 90002 en el template al campo fecha
}
if ($modelo->hasErrors($data))
{
$vista->setTemplate("editar");
if ($save){ //se muestra un titulo u otro dependiendo de si se esta editando o insertando
$vista->set_var("titulo","[{7901|}]");
$data["fecha"]["Comment"]["noEditable"]=1; //Que el campo solo pueda verse
}else{
$vista->set_var("titulo","[{7900|}]");
$vista->excludeField($data,"fecha"); //Quitamos el campo
}
$vista->excludeField($data,"fecha"); //Quitamos el campo
$vista->createForm($data);
$vista->parseTemplate();
}
else
{
$data["fecha"]["Value"] = $modelo->now(); //Seteamos la fecha de hoy
if (!$save){ //Solo si estamos insertando
$data["fecha"]["Value"] = $modelo->now(); //Seteamos la fecha de hoy
}
$config["thumbWidth"]=200;
$config["thumbHeight"]=100;
$modelo->upload("",$config); //Subir archivo(s) enviado(s)
$modelo->setData($data,"",false);
$vista->redirect($_POST['redirect']);
}
}
/**
* @desc Funcion que presenta el template de modificacion de datos de un registro.
*/
function noticia_editar()
{
global $modelo, $vista;
$vista->setTemplate();
$data = $modelo->getData();
$vista->excludeField($data,"fecha"); //Quitamos el campo
$data["fecha"]["Comment"]["noEditable"]=1; //Que el campo solo pueda verse
$vista->set_var("titulo","[{7901|}]");
$vista->createForm($data);
$vista->parseTemplate();
}
/**
* @desc Funcion que graba los datos de una actualizacion de un registro.
*/
function noticia_guardar()
{
noticia_insertar(1);
}
/**
* @desc Elimina un registro y sus relaciones con idiomas
*/
function noticia_eliminar()
{
global $modelo,$vista;
//Noticia
$modelo->dropData();
$vista->redirect($_POST['redirect']);
//Imagenes
$config["relations"]= "1"; //Configuramos para cambiar el modulo objetivo
$config["prefix"] = "mimg_";
$config["module"] = "imagen";
$modelo->dropData("id_mno_noticia",$config); //Y le damos el id por el cual se relacionara con nuestro módulo actual
}