Post on 26-Oct-2014
TUTORIAL PARA CREAR UN MODULO EN CODEIGNITER
Christian A. Vázquez Villanueva
Desarrollo de un modulo de registro de periodos vacacionales así como la prima correspondiente a estos periodos
1. Definir tabla en nuestra base datos ( creada previamente e.j sistema)
Para crear la tabla hay dos opciones
ir a localhost/phpmyadmin/
A) entrar a las base de datos sistema oprimir el boton sql y copiar el siguiente codigo
CREATE TABLE IF NOT EXISTS `vacaciones` ( `id` int(11) NOT NULL auto_increment, `nombre` varchar(255) NOT NULL, `inicia` date NOT NULL, `termina` date NOT NULL, `prima` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
B) Crerala manualmente como se muestra en el video
2. Cofiguracion
a) En codeigniter hay 2 archivos importantes para la configuración
system\application\config \confi.php
aquí es importante el poner el url de nuestra aplicación
$config['base_url'] = "http://localhost/aplicacion/";
system\application\config\database.php
$db['default']['hostname'] = "localhost";$db['default']['username'] = "root";$db['default']['password'] = "admin";$db['default']['database'] = "sistema";$db['default']['dbdriver'] = "mysql";
b) En codeigniter hay 3 carpetas importates para el desarrollo de un modulo
system\application\controllers ---> aquí van los archivos controladores
system\application\model s ----> aquí van los archivos modelo
system\application\views ----> aquí van los archivos vista
3. Creando el controlador de nuestro modulo
En la carpeta de controlador crear un archivo con el nombre de vacaciones.php
controllers/ vacaciones.php
<?phpclass Vacaciones extends Controller{
function Vacaciones(){parent::Controller();
$this->load->model('Vacaciones_model');
}
/// pantalla de bienvenida al modulo de vacaciones
function index(){
$data['seccion'] = "home";
$partials = array('content'=>'vacaciones/home');
$this->template->load('plantilla', $partials, $data);
}
/// muestra todos los registros de vacaciones en una tabla
function admin(){
$data['vacaciones'] = $this->Vacaciones_model->getTodos();
$partials = array('content'=>'vacaciones/Admin');
$this->template->load('plantilla', $partials, $data);
}
// muestra formulario para sumar nuevo registro
function add(){$this->load->helper('form');
$data['css'] = array('js/datePicker/jquery.datepick.css');$data['js'] = array('js/jquery.datepick.js', 'js/jquery.datepick-es.js', 'js/jquery.datepick.validation.pack.js', 'js/admin/banner.js');
$partials = array('content'=>'vacaciones/Add');
$this->template->load('plantilla', $partials, $data);}
// muestra formulario con campos llenos para editar un registro
function edit(){$this->load->helper('form');
if(is_numeric($this->uri->segment(3))){$id = $this->uri->segment(3);$data['vacaciones'] = $this->Vacaciones_model->getDetalles($id);}else{redirect('vacaciones/add', 'refresh');}
$data['css'] = array('js/datePicker/jquery.datepick.css');$data['js'] = array('js/jquery.datepick.js', 'js/jquery.datepick-es.js', 'js/jquery.datepick.validation.pack.js', 'js/admin/banner.js');
$partials = array('content'=>'vacaciones/Add');$this->template->load('plantilla', $partials, $data);}
/// funcion para salvar un registro vacacional
function save(){$this->load->helper('form');
$dataSet=$_POST;
if(isset($dataSet['submit'])){unset($dataSet['submit']);
if(!empty($dataSet['id'])){ /// si el id tiene valor se actualiza el registro
$id=$dataSet['id'];unset($dataSet['id']);
$this->Vacaciones_model->saveVacacionesData($id,$dataSet); // se invoca funcion del modelo para actualizar
redirect('vacaciones/admin', 'refresh');
}else { /// si no existe id se agrega el registro
$this->Vacaciones_model->addVacacionesData($dataSet); // se invoca funcion del modelo para agregar
redirect('vacaciones/admin', 'refresh');
}
}
}
// funcion para borrar un resgitro vacacional con id $id
function delete($id) {$this->load->model('Vacaciones_model');if ($this->Vacaciones_model->delete($id)){
redirect('vacaciones/admin', 'refresh');
}
}
}
?>
4. Creando el modelo de nuestro modulo
Se debe crear un archivo con el nombre de vacaciones_model.php
models/ vacaciones_model.php
<?phpclass Vacaciones_model extends Model {
function Vacaciones_model() {parent::Model();}
// funcion que extraee todas los registros de vacaciones
function getTodos() {$query = $this->db->get('vacaciones');return $query->result();}
// funcion que extrae los detalles de un registro de vacaciones function getDetalles($id) {$query = $this->db->where('id', $id);$query = $this->db->limit('1');$query = $this->db->get('vacaciones');if ($query->num_rows() == 1) {return $query->row();}return false;}
/// funcion que inserta un nuevo registro de vacaciones
function addVacacionesData($data) {
if ($this->db->insert('vacaciones', $data)) { // ejecutamos el insertreturn true; //}
else {return false;
}
}
/// funcion que actualiza un registro de vacaciones
function saveVacacionesData($id, $data) {
$this->db->where('id', $id);
if ($this->db->update('vacaciones', $data)) {
return true; //}else {
return false;}
}
// funcion que borra un registro de vaciones con id $id
function delete($id) {$this->db->where('id', $id);if ($this->db->delete('vacaciones')) {return true;} elsereturn false;}
}
5. Creando las vistas de nuestro
Se debe crear un carpeta dentro de views llamada vacaciones en donde debemos agregar 4 archivos
views/vacaciones/Add.php
views/vacaciones/Admin.php
views/vacaciones/home.php
views/vacaciones/Detalles.php
Add.php
<form id="form1" name="form1" method="post" action="<?=base_url(); ?>vacaciones/save">
<table width="411" border="1"> <tr> <td width="172"></td> <td width="223"> <?php if (isset($vacaciones->id)): ?><p><?phpecho form_label('ID:','id');echo form_input('id',$vacaciones->id,'readOnly=\'readonly\'');
?></p><?php endif; ?></td> </tr> <tr> <td>nombre</td> <td><label> <input name="nombre" type="text" id="nombre" value="<?=isset($vacaciones->nombre)? $vacaciones->nombre : '' ?>"/> </label></td> </tr> <tr> <td>inicia</td> <td><label> <input name="inicia" type="text" id="inicia" value="<?=isset($vacaciones->inicia)? $vacaciones->inicia : '' ?>"/> </label> AAAA/MM/DD</td> </tr> <tr> <td>termina</td> <td><label> <input name="termina" type="text" id="termina" value="<?=isset($vacaciones->termina)? $vacaciones->termina : '' ?>"/> </label> AAAA/MM/DD</td> </tr> <tr> <td>prima</td> <td><label> <input name="prima" type="text" id="prima" value="<?=isset($vacaciones->prima)? $vacaciones->prima : '' ?>"/> </label></td> </tr> <tr> <td> </td> <td><label>
<input type="submit" name="submit" value="Enviar" /> </label></td> </tr> </table></form>
Admin.php
<div class="admin-menu"> <span class="button"> <?php echo anchor('vacaciones/add', 'Nuevo registro'); ?> </span></div>
<table class="admin" id="adminTable">
<tr><th>ID</th><th>nombre</th><th>inicia</th><th>termina</th><th>prima</th><th colspan='2'>Accion</th></tr><tbody id="bodyTable"><?php foreach($vacaciones as $row): ?><tr><td><?= $row->id ?></td><td><?= $row->nombre ?></td><td><?= $row->inicia ?></td><td><?= $row->termina ?></td><td><?= $row->prima ?></td><td><?= anchor('vacaciones/edit/'.$row->id, img(array('src'=>'css/admin/ico_edit_16.png', 'border'=>'0', 'alt'=>'Eliminar')))?> </td>
<td><?= anchor('vacaciones/delete/'.$row->id, img(array('src'=>'css/admin/ico_delete_16.png', 'border'=>'0', 'alt'=>'Eliminar')), array('class'=>'del', 'rel'=>$row->id))?></td></tr><?php endforeach; ?></tbody></table>
home.php
<p>Bienvenido al panel de Vacaciones</p>
6. Creacion de un archivo plantilla en views para visualizacion de las vistas.
views/plantilla.php
plantilla.php
<!doctype html>
<html><head><title>Plantilla</title>
<meta charset="utf-8" />
<meta generator="csscreator.com" />
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<style>
/* ******************************************************************** */ /* Generated by: http://csscreator.com *//* ******************************************************************** */html, body{ margin:0; padding:0; text-align:center; background-color:#808080; } #pagewidth{
width:800px; text-align:left; margin:0 auto; } #maincol{ background-color:white; height:500px; position: relative; } #footer{ height:50px;
background-color:#FFFFFF; clear:both; display:block; overflow:auto;}
/* ******************************************************************** */ /* Clearfix: http://csscreator.com/attributes/containedfloat.php *//* ******************************************************************** */.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .clearfix{display: inline-block;}
/* Hides from IE-mac \*/* html .clearfix{height: 1%;}.clearfix{display: block;}/* End hide from IE-mac */
</style>
</head>
<body>
<div id="pagewidth" >
<div id="wrapper" class="clearfix">
<div id="maincol">
<a href="<?=base_url()?>vacaciones/index/">Home</a><a href="<?=base_url()?>vacaciones/admin/">Administracion de vacaciones</a>
<br></br><br></br>
<?=$content;?>
</div>
</div>
<div id="footer2"> </div>
</div>
</body>
</html>
6. Probar la aplicación
ir a la ruta http://localhost/aplicacion/vacaciones/
debe jalar como la que está en http://tecnologiasjava.com/aplicacion/vacaciones/
Suerte : )