Tutorial Para Crear Un Modulo en Codeigniter

Post on 26-Oct-2014

324 views 1 download

Transcript of Tutorial Para Crear Un Modulo en Codeigniter

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>&nbsp;</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 : )