Primeros pasos con CodeIgniter

25
41510

Siguiendo este tutorial podrás crear de manera muy sencilla una aplicación de estructura MVC con CodeIgniter.

Índice de contenidos

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í:

Estructura ficheros CodeIgniter

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:

    			$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.

      				$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.

      			 	$autoload['helper'] = array('url');
      			
    • En ese mismo fichero, comprueba que cargas automáticamente la conexión a base de datos:

                                 $autoload['libraries'] = array('database'); 
                             

A la hora de llamar a nuestra aplicación desde el navegador, CodeIgniter lo hace de la siguiente manera:

base url

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:

	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.

Index CodeIgniter

[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.

$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”.

modelo CodeIgniter ejemplo

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:

controller CodeIgniter ejemplo

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.

vista CodeIgniter ejemplo

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.

despliegue

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

25 COMENTARIOS

  1. 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.

  2. 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 :).

    • 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:

      
      
  3. 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.

      • 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

  4. 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

    • 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.

        • 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">

  5. 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…

  6. 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]

  7. 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.

  8. 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

  9. 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

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad