Tutorial CodeIgniter 2º parte: Clases Modelo y eliminar index.php de las URL

Continuamos con nuestra guía sobre los conceptos básicos de CodeIgniter, en esta entrada, comprenderemos el funcionamiento de los Modelos y finalizaremos el ejemplo que habíamos comenzado en la anterior entrega.


code-igniter

Preparando la base de datos y configurando CodeIgniter

En el anterior post vimos cómo se llamaba a los Controladores, y cómo se podía enviar datos a las Vistas para poder mostrarlos al usuario, pero para finalizar el ejercicio que nos habíamos planteado, es necesario obtener la información de la base de datos.

En primer lugar, necesitamos crear la estructura de la base de datos e introducir algunos registros, para ello usaremos este script SQL:

[cc]
CREATE DATABASE IF NOT EXISTS `adwe` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `adwe`;

CREATE TABLE IF NOT EXISTS `empleados` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`sueldo` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `empleados` (`id`, `nombre`, `sueldo`) VALUES
(1, ‘Juan’, 1000),
(2, ‘Javier’, 800),
(3, ‘Jaime’, 1250),
(4, ‘Jorge’, 1100);
[/cc]

A continuación, debemos configurar CodeIgniter para que pueda conectarse a la base de datos, para ello nos iremos a la carpeta “config” dentro de “application”, y abriremos el fichero “database.php” y nos fijaremos en estas líneas:
[cc]
$db[‘default’][‘hostname’] = ‘localhost’;
$db[‘default’][‘username’] = »;
$db[‘default’][‘password’] = »;
$db[‘default’][‘database’] = »;
[/cc]
Debemos modificar estos valores con los necesarios para conectar a nuestra base de datos, si no hemos hecho ninguna modificación a la configuración que trae por defecto MySQL, el usuario es ‘root’ y la contraseña está vacía (algo que se debe evitar en un entorno de producción por traer problemas de seguridad). Por último, el parámetro ‘database’ debe ser ‘adwe’.

Creando nuestra primera clase Modelo

Ya tenemos todo listo para conectarnos a la base de datos, así que es hora de trabajar en nuestro primer Modelo. Crearemos un fichero llamado ‘Empleados_model.php’ dentro de la carpeta ‘Models’, y escribiremos lo siguiente:
[cc]
load->database();
}

function obtener_empleados(){
$query = $this->db->get(‘empleados’);

return $query->result_array();
}
}
?>
[/cc]
En la función ‘__construct’ cargamos la base de datos, así podemos acceder a ella usando $this->db, como hacemos en la función ‘obtener_empleados’. Para poder recuperar todos las entradas de la tabla ‘empleados’, ejecutamos la función ‘get()’, que recibe como parámetro la tabla de la que queremos los registros, así que esta llamada se traduciría como: SELECT * FROM ‘empleados’. La función ‘get()’ está disponible gracias a la clase Active Record de CodeIgniter, aquí podéis ver todas las opciones que nos brinda.

Modificando el Controlador y la Vista

Con esto tenemos un enlace con la base de datos, lo siguiente será modificar el controlador para que maneje estos datos, para ello volvemos al fichero ‘empleados.php’ en ‘controllers’ y realizaremos las siguiente modificaciones en la función ‘mostrar_pagina_principal’:

[cc]
function mostrar_pagina_principal(){
$this->load->model(‘empleados_model’);
$listadoEmpleados = $this->empleados_model->obtener_empleados();

$listadoEmpleadosSueldo = array();
foreach($listadoEmpleados as $empleado){
$itemEmpleado = array();
$itemEmpleado[‘nombre’] = $empleado[‘nombre’];
$itemEmpleado[‘sueldoAnual’] = $empleado[‘sueldo’]*12;
$listadoEmpleadosSueldo[] = $itemEmpleado;
}

$data = array(
‘empleados’ => $listadoEmpleadosSueldo
);
$this->load->view(‘pagina_principal’, $data);
}
[/cc]

En primer lugar, cargamos el modelo que hemos creado en la primera línea, usando la función ‘load->model’ y pasándole el nombre del modelo, a continuación llamamos a la función que habíamos creado y obtenemos un array con la información de la base de datos. Después, recorremos el array calculando el sueldo anual de cada empleado, y copiando este dato además del nombre a un nuevo array, que será el que enviemos a la Vista en el array ‘$data’.

Finalmente, preparamos la vista para que muestre la información de manera ordenada:
[cc]

Primer tutorial de CI en ADWE


Nombre Sueldo Anual



[/cc]
Si todo ha ido bien, debemos ser capaces de ver una página como la siguiente:
2Tutorial CI

Eliminar index.php de las URL

Para finalizar esta entrada, veremos cómo se puede eliminar ‘index.php’ de la URL de nuestra web, para ello, necesitaremos crear un fichero .htaccess y colocarlo en la raíz de nuestra web (junto a ‘index.php’). En este fichero escribiremos esto:
[cc]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

[/cc]
Este fichero hace lo siguiente: primero comprueba si Apache dispone del módulo ‘mod_rewrite’, si es así, lo inicia en la línea 2, a continuación establece dos condiciones, si la ruta solicitada no hace referencia a ningún archivo o carpeta del servidor, entonces se ejecuta la penúltima línea del fichero, donde se reescribe la dirección y se le añade ‘index.php’ al inicio. Para que esto funcione es necesario poner la opción ‘index_page’ del fichero de configuración ‘config.php’ en blanco, y asegurarnos de que Apache disponga del módulo ‘mod_rewrite’.

Eso es todo por hoy, en la próxima entrega estudiaremos el ayudante para formularios de CodeIgniter, e insertaremos datos en la base de datos.