> Manuales > Manual de CodeIgniter

Qué son los controladores y qué papel juegan en el modelo MVC. Cómo construir un primer controlador en una aplicación PHP con el framework PHP CodeIgniter.

Los controladores son uno de los componentes que forman parte del modelo de programación MVC (Modelo - Vista - Controlador o Model - View - Controller en inglés) que sirven como engranaje principal a la hora de crear aplicaciones web. Dado que CodeIgniter utiliza la arquitectura MVC, tendremos que aprender a manejar y dominar los controladores como un primer paso para comenzar a trabajar con este framework PHP.

Para los que no sepan qué es el MVC cabe decir que ya fue explicado en este manual de CodeIgniter, concretamente en el capítulo Modelo - Vista - Controlador en CodeIgniter. Así que podemos pasar directamente a explicar las particularidades de los controladores en este entorno de programación.

Para explicar los controladores voy a basarme en la propia documentación del framework PHP, que está tutorializada, como ya dijimos en la introducción a CodeIgniter. Por lo que resulta una manera excelente para aprender a dar los primeros pasos en el desarrollo de aplicaciones.

primer controlador en CodeIgniter

Qué es un controlador

Un controlador en CodeIgniter es un archivo que contiene el código de una clase, de programación orientada a objetos, que colocamos en un directorio específico del esquema de carpetas de nuestro sitio. Tiene un nombre cualquiera, que se asociará con una URL de nuestra aplicación web.

Por ejemplo, esta podría ser una URL de nuestra aplicación:

midominio.com/index.php/articulos

En la URL anterior podemos ver que la palabra "artículos" determina la página que queremos ver dentro de nuestra aplicación. Pues bien, para poder atender esta solicitud nosotros vamos a tener que crear un archivo llamado articulos.php (el controlador) dentro del directorio que aloja los controladores de nuestra aplicación.

Por tanto, cuando CodeIgniter detecta una URL como esta, intentará acceder al archivo articulos.php, para cargarlo, procesarlo y de ese modo mostrar la página con los contenidos de esta sección.

Cuando ese controlador no se encuentre entre los archivos de controladores de CodeIgniter, simplemente se mostrará un error 404 de página no encontrada. Si se encontró el controlador, como se decía, se carga y se procesa para mostrar la página.

Los controladores en CodeIgniter se guardan en la carpeta "system/application/controllers/", que se encuentra dentro de los archivos de CodeIgniter.

Nota: Todos los archivos que vamos a tener que crear o editar para desarrollar nuestra aplicación PHP con CodeIgniter están dentro de la carpeta "system/application" y existe una carpeta dentro para cada tipo de cosa que deseemos crear o modificar, como archivos de configuración, modelos, vistas, etc.

Creando un primer controlador en CodeIgniter

Para empezar a programar en CodeIgniter vamos a crear un primer controlador, llamado artículos, que simplemente mostrará un mensaje de bienvenida para saber que todo está funcionando correctamente.

El código de este primer controlador será el siguiente:

<?php
    Class Artículos extends CI_Controller{
	    Function index()
		    {
		        echo “Bienvenido a mi primer controlador en CodeIgniter”;
            }
    }
?>

Ten en cuenta que este manual fue escrito en una versión antigua de Codeigniter, por lo que algunos códigos pueden estar poco actualizados. Anteriormente este era el código de un controlador.

<?php
class Articulos extends Controller {

   function index()
   {
      echo 'Bienvenido a mi primer controlador en CodeIgniter';
   }
}
?>

Como puedes apreciar, los nombres de las clases proporcionadas por el framework codeigniter ahora tienen un prefijo "CI_". Esto puede ser importante de cara a otros ejemplos encontrados en este manual.

Este archivo lo tenemos que guardar como "articulos.php" en la carpeta "system/application/controllers/". Caben señalar unos detalles importantes:

Una vez creado el archivo, podemos acceder con el navegador al controlador, con una URL como esta:

http://localhost/index.php/articulos

Nota: Esta URL supone que has instalado CodeIgniter en la raíz de tu servidor web, pero podrías haber instalado CodeIgniter en otro directorio, en tal caso la URL tendría una forma como http://localhost/directorio_de_codeigniter/index.php/articulos

En caso que esté funcionando todo correctamente, tendrás que visualizar una página con el mensaje que habías colocado en el echo que hay dentro de la función index() del controlador. Si no funciona, comprueba tu URL, que tiene acceder al directorio correcto donde hayas instalado CodeIgniter y que tiene que acabar con el nombre del controlador en minúsculas. Comprueba también que la clase que has creado en el código del controlador tiene la primera letra en mayúscula. No debe haber mucho problema ni dificultad.

En el siguiente artículo veremos cómo podemos crear funciones en los controladores, para dar lugar páginas distintas que dependan del mismo controlador.

Controlador por defecto

Pero, antes de acabar el presente artículo, quiero hablar sobre el controlador por defecto, que es el que se invoca en CodeIgniter cuando no se especifica ningún nombre de directorio y por tanto ningún controlador, en la siguiente URL:

midomino.com/index.php/

O bien en esta otra:

midominio.com/

Esto, que sería la home de la aplicación CodeIgniter, y eventualmente la home del dominio, si es que hemos instalado el framework en la raíz del directorio de publicación, invoca también un controlador, que es el controlador por defecto.

El nombre del controlador predeterminado (Default Controller) puede ser variable, siendo el desarrollador el encargado de configurarlo en uno de los archivos de configuración de CodeIgniter, que se encuentra en el fichero "application/config/routes.php".

En ese archivo simplemente tenemos que buscar el valor $route['default_controller'] y asignarle el nombre de la clase donde está el controlador que queramos que se invoque. Como es el nombre de una clase de un controlador tendremos que escribirlo con la primera letra en mayúscula.

$route['default_controller'] = 'Articulos';

Si observamos el valor de esta variable de configuración, tal como está en el momento inicial, después de la instalación de CodeIgniter, veremos que el controlador por defecto está en la clase "Welcome", archivo application/controllers/welcome.php

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual