La semana pasada puse un artículo donde explícaba mi propuesta para el envío de parametros entre modelos y controladores del framework de codeigniter; ahora se me ocurrió la fabulantástica idea de hacer lo mismo, pero esta vez de la vista al controlador. Actualmente uso prototypejs para el manejo de operaciones/acciones con ajax y para los efectillos uso scriptaculous. El caso es que dejaré un ejemplo muy sencillo de como hacer esto, tanto de la vista y el script de JS así como el controlador y obviamente con el ejemplo anterior de pasar parametros como un arreglo al modelo
//MODELO
/*
*Este es el ejemplo de como el MODELO recibe parametros desde el
*controlador mediante un arreglo descriptivo
*/
<php if (!defined("BASEPATH")) { exit("No direct access allowed");}
class Getusuarios extends Model {
function __construct(){
parent::Model();
}
function details($parametros = NULL){
//Checo que el arreglo de parametros contenga datos
if (is_array($parametros)){
//Creo la sentencia SQL para extraer los datos
$sqlUsuariosDetalle = ' SELECT * ';
$sqlUsuariosDetalle .= ' FROM Users ';
$sqlUsuariosDetalle .= ' WHERE uid = ? ';
$sqlUsuariosDetalle .= ' AND dep = ? ';
//ejecuto el query a la base de datos pasandole el arreglo que
//viene del controlador
$rs = $this->db->query($sqlUsuariosDetalle, $parametros);
//checo que contenga datos
if ($rs->num_rows() > 0){
//en caso de que contenga datos regreso el resultado
$result = $rs->result();
return $result;
//no hay datos, no regreso nada.
} else { return FALSE; }
//si no hay parametros, no hay consulta
} else { return FALSE; }
}
function list () {
//creo la sentencia sql para obtener los datos
$sqlListaUsuarios = ' SELECT uid, name ';
$sqlListaUsuarios .= ' FROM Users ';
$sqlListaUsuarios .= ' WHERE gid >= 12 ';
//ejecuto el query en la base de datos.
$rs = $this->db->query($sqlListaUsuarios);
//checo que traiga datos
if ($rs->num_rows() > 0){
//De tener algo, regreso el resultado
return $rs->result();
//Si no hay datos, regreso falso
} else { return FALSE; }
}
}
?>
Ahora veamos como se aplícan ambos ejemplos en el controlador, tanto para recibir parametros desde la vista con JS mandados con prototype y a su vez como manda los parametros al modelo por medio del arreglo.
//Controlador
<php if (!defined("BASEPATH")) { exit("No direct access allowed");}
class Usuarios extends Controller {
function __construct(){
parent::Controller();
$this->load->model('getusuarios');
}
function detalles(){
//convierto lo que viene de la cadena en un arreglo.
$param = explode(',',$this->input->post('params'));
if ($param[0] > -1 ) {
$dep = $param[1]!=5?$param[1]:-1;
$dao_params['id'] = $param[0];
$dao_params['dep'] = $param[1];
//envío el arreglo de parametros al modelo.
$recordset = $this->getusuarios->details($dao_params);
if (count($recordset) > 0) { $data['registros'] = $recordset; } else { $data['registros'] = NULL; }
$this->load->view('user_details',$data);
} else { $this->usuarios(); }
}
function lista(){
$recordset = $this->getdepartamentos->list();
if (count($recordset) > 0) {
$datos = array('-1'=>"Seleccione");
foreach($recordset as $rs){ $datos[$rs->id] = $datos[$rs->nombre_dep]; }
$data['lista_departamentos'] = $datos;
} else { $data['lista_departamentos'] = NULL; }
$this->load->view('users_list',$data);
}
}
?>
//VISTA
Próximamente me pondré a jugar con JSON para poner ejemplos, espero les ayude y les guste el post, por favor no olviden dejar su comentario.
Saludos.






