Siguiendo este tutorial podrás crear de manera muy sencilla una aplicación de estructura MVC con CodeIgniter.
Índice de contenidos
- 1. Introducción
- 2. Entorno
- 3. Instalación de CodeIgniter
- 4. Operaciones básicas
- 5. Despliegue
- 6. Conclusiones
- 7. Referencias
1. Introducción
CodeIgniter es un framework de código abierto para crear aplicaciones web utilizando arquitectura MVC. Permite a los desarrolladores realizar proyectos de manera muy rápida, con una interfaz simple y una lógica muy sencilla.
Trabajar con una estructura [tooltip text=»Modelo-Vista-Controlador»]MVC[/tooltip] facilita la organización del código y poder establecer una división entre el acceso a datos, la lógica de negocio y la capa de presentación de nuestra aplicación.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 17’’ (2.66 GHz Intel i7, 8GB 1067 Mhz DDR3, 500GB Flash Storage).
- Sistema Operativo: Mac OS X El Capitan 10.11.4
- Entorno de desarrollo: Eclipse Mars for PHP Developers
- Apache/2.4.18
- PHP 5.5.31
- MySQL Community Server 5.7.12
- CodeIgniter 3.0.6
3. Instalación de CodeIgniter
La instalación de CodeIgniter es muy sencilla. Partiendo de que ya tienes instalado en tu equipo tanto PHP como Apache, solo debes seguir los siguientes pasos:
- Lo primero que debes hacer es crear un proyecto PHP.
- A continuación, descarga la última versión de CodeIgniter de la página oficial.
- Descomprime el zip que has descargado y copia o arrastra su contenido dentro del proyecto de PHP que has creado previamente.
Ya has instalado CodeIgniter y está listo para empezar a trabajar con él. La estructura de tu proyecto debe haber quedado así:
3.1. Configuración
Aunque nuestro entorno ya está preparado para empezar a escribir código, es recomendable modificar los ficheros de configuración para facilitar algunas tareas.
-
Modificando el archivo application>config>routes.php, puedes cambiar el controlador por defecto, de manera que al escribir la URL Base de tu proyecto en el navegador, se ejecute la acción que tú quieras. Puedes cambiarlo en la siguiente línea:
1$route['default_controller'] = 'welcome'; - Es importante tener clara cuál es la URL que llamará a nuestra aplicación. Para poder acceder a ella de manera sencilla desde tu código sin necesidad de escribirla constantemente, CodeIgniter pone a tu disposición el helper URL. Si quieres utilizarlo, deberás modificar dos ficheros.
-
En primer lugar, debes definir tu URL Base en application>config>config.php.
1$config['base_url'] = 'http://127.0.0.1/miproyecto';
En ese mismo fichero puedes definir muchas otras cosas, como el charset, el proxy o la configuración de cookies y variables de sesión. -
Seguidamente, en application>config>autoload.php tienes que cargar el helper URL para evitar hacer un include cada vez que quieras utilizarlo.
1$autoload['helper'] = array('url'); -
En ese mismo fichero, comprueba que cargas automáticamente la conexión a base de datos:
1$autoload['libraries'] = array('database');
A la hora de llamar a nuestra aplicación desde el navegador, CodeIgniter lo hace de la siguiente manera:
Para prescindir del elemento index.php y que apache reescriba las urls, puedes incluir en la raíz de tu proyecto un fichero .htaccess con la siguiente configuración:
1 2 3 4 |
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] |
4. Operaciones básicas
Tras instalar CodeIgniter, puedes mostrar tu aplicación en el navegador simplemente introduciendo la URL Base, y aparecerá la vista que carga el controlador por defecto, definido en el fichero routes.php, como indicaba anteriormente. Si la muestras en este punto, se cargará la página de bienvenida del controlador Welcome.php.
[alert type=»info» close=»false»]
Para poder visualizar la salida de la aplicación es importante que tu proyecto esté desplegado en el Document Root del servidor.
[/alert]
4.1. Modelo
El modelo es el encargado del acceso a datos. Para este ejemplo he creado una base de datos en MySQL, con una sola tabla llamada “Usuarios”, de manera que pueda acceder a ella y mostrar su contenido en la vista.
4.1.1. Configuración del acceso a BBDD
La configuración de la base de datos se encuentra en el fichero application>config>database.php, donde debes modificar algunos parámetros, como el nombre de la base de datos, el usuario y la contraseña.
1 2 3 4 5 6 7 |
$db['default'] = array( 'dsn' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => '', 'database' => 'miproyecto', 'dbdriver' => 'mysqli', |
4.1.2. Acceso a datos
A continuación, crea una clase model que extienda de CI_Model en application>models. Para este ejemplo solo necesitarás una función que seleccione todo el contenido de la tabla “Usuarios”.
Como ves, CodeIgniter establece la conexión con la base de datos por ti, y solamente tienes que indicarle a la variable “db” el método que necesites y el nombre de la tabla a la que quieras acceder.
Una vez obtengas el resultado de tu query, utiliza la función result_array() para transformarlo en un array y hacerlo más manejable. Tu función debe devolver dicho array para que pueda ser recogida por el controlador.
4.2. Controlador
Crea un archivo Usuarios.php en application>controllers que contenga una clase del mismo nombre y que extienda CI_Controller. Escribe la siguiente función:
La primera línea carga el modelo que hemos creado previamente. El segundo argumento es un alias para agilizar la escritura de código, y el tercero indica que quieres que efectúe la conexión con la base de datos automáticamente.
La segunda línea llama a la función getAll() sobre el alias del modelo, y almacena el resultado en la variable $datos[‘Usuarios’].
Por último, carga la vista (que aún no has definido), que mostrará los datos y, para ello, le pasamos éstos como argumento.
4.3. Vista
Crea un último archivo usuarioSaludo.php en application>views. En el paso anterior has pasado a esta vista la variable $datos, de modo que lo único que tienes que hacer es acceder a ella a través de las claves de dicho array (en este caso la clave es ‘Usuarios’).
Como la consulta del modelo ha devuelto todas las filas de la tabla, selecciona el elemento 0 para que solo muestre el primer usuario. Si quisieras mostrarlos todos, podrías recorrerlos con un bucle. Indica también el nombre del campo de la tabla que necesites.
5. Despliegue
Tu aplicación ya está lista para ver el resultado. Para ello solo debes abrir tu navegador y escribir la URL Base, seguida del nombre de tu controlador y el nombre de la función que quieras llamar.
6. Conclusiones
CodeIgniter es un framework ligero, sencillo e intuitivo que permite crear aplicaciones PHP rápidamente. Al trabajar con él, se parte de una estructura predefinida que agiliza la tarea del programador, haciendo muy fácil el acceso a datos y el manejo de éstos.
7. Referencias
- Página oficial de CodeIgniter
Hola, excelente tutorial, pero por que no mejor usar un framework PHP mas robusto como por ejemplo Symfony2, Laravel 5, Yii 2
Esos son lo que yo recomendaría tomando en cuenta las herramientas que siempre usa Autentia.
Saludos.
Buenas, que bien que publiquen contenido del elefante azul, esta genial, espero que vengan una segunda parte, integración con hmvc, doctrine y esas clases de brujería :).
Hola, el artículo esta perfectamente explicado, directo y para principiantes.
La pregunta es…
En el ejemplo como recorro $Usuarios ???
Gracias.
En el ejemplo no se recorre el array, solamente se pinta el primer resultado que devuelve. Si quisieras pintar todos, podrías hacerlo con un bucle:
Hola buen día.
Tengo el siguiente problema:
Cuándo debe llamar a la pagina «welcome» en la primera parte de la explicación tengo el sigueinte inconveniente:
Fatal error: Call to undefined function memory_get_usage() in C:Program FilesEasyPHP 2.0b1wwwproyectoCIPHPsystemcoreOutput.php on line 446
A PHP Error was encountered
Severity: Error
Message: Call to undefined function memory_get_usage()
Filename: core/Output.php
Line Number: 446
Backtrace:
Me descargue la versión 3.1.0 de CI.
Si alguien puede ayudarme con este erro muy agradecido.
¿Qué versión de PHP tienes? Ese error suele salir con versiones antiguas de PHP. Prueba subiendo de versión.
Hola buen día.
Tengo la siguiente versión de PHP: «PHP Version 5.2.0»
Saludos
Hola de nuevo…
Lo pude corregir y en el script de PHP indicado en la línea que marca le puse lo siguiente:
$memory = ( ! function_exists(‘memory_get_usage’)) ? ‘0’ : round(memory_get_usage()/1024/1024, 2).’MB’;
Y ese inconveniente se solucionó…
El otro problema es que no puedo prescindir del «index.php».
De la forma que usted lo comenta el «.htaccess» dónde debe estar dentro de la carpeta «mi_proyectoapplication» o a nivel de «proyectoCIPHP» !!??
Un saludo cordial
Buen día.
Una consulta
Si tengo que agregar CSS en CI…
Dónde es que deben estar la hojas de Estilo?
Digo dentro de la carpeta «view» o a nivel del proyecto?!!
Saludos
tengo la misma duda
Para CSS, JS e imágenes, creo una carpeta al mismo nivel que application, colgando directamente del proyecto. Llamo a la carpeta assets y dentro creo una carpeta para cada tipo de fichero: CSS, JS…
El .htaccess debe colgar de la raíz del proyecto, a la misma altura que la carpeta application.
Hola Macu,
Podrías aclarar una duda por favor?
Hay que especificar algo en el .htaccess para que las imágenes y los JS o CSS puedan ser cargados?.
No es necesario, como decía en un comentario anterior:
«Para CSS, JS e imágenes, creo una carpeta al mismo nivel que application, colgando directamente del proyecto. Llamo a la carpeta assets (o como prefiera) y dentro creo una carpeta para cada tipo de fichero: CSS, JS…»
Después desde las vistas puedes llamarlos de esta manera: <link href="<?= base_url();?>assets/css/archivo.css" rel="stylesheet">
en el archivo .htaccess que pones cuando cargas la primera ves si se ha elminado el index pero luego cuando comienzas a navegar por la web comienza el index a aparecer nuevamente…
Sigo los pasos sin conseguir que funcione
En el modelo hace falta cargar la base de datos..
$this->load->database();
En el archivo .htaccess falta agregar el nombre de la carpeta para que funcione.
Es decir si tuviéramos CodeIgniter instalado en una subcarpeta «nombre_proyecto» de nuestro dominio. Debemos colocar lo siguiente:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /nombre_proyecto/index.php/$1 [L]
Genial el tutorial, saludos
Hola Macu. ¡EXCELENTE EXPLICACIÓN! Estoy iniciando en este framework y me fuiste de mucha ayuda. Gracias
gracias, me irvio mucho para entender donde se organiza toda la informacion
Muy buen tuto para comenzar desde cero en el Framework.
He realizado algún proyecto en Laravel y me pareció muy efectivo y funcional, además de estructurado; qué diferencias tiene CodeIgniter con respecto a Laravel y cuál consideras que es mejor.
Hola porque aparecera esto.
A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant usuarioSaludo – assumed ‘usuarioSaludo’
Filename: controllers/Usuarios.php
Line Number: 7
perdon, era una comilla.
Solucionado Gracias
buena explicacion, gracias
Buenas tardes Macu,
cuando dices:
«Para prescindir del elemento index.php y que apache reescriba las urls, puedes incluir en la raíz de tu proyecto un fichero .htaccess con la siguiente configuración:»
te refieres a un .htaccess a que tenemos que crearlo nuevo o lo añadimos al ya existente.
gracias
un saludo