dominios y alojamiento web en hostalia

Controllers en CodeIgniter

20 de January de 2010
Valoración del artículo:
Qué son los controladores -controllers en inglés- en el modelo MVC y en concreto en el framework PHP CodeIgniter, cómo crearlos y utilizarlos para generar las páginas de un sitio.
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.

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 Articulos extends Controller {

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

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

  • En nombre del archivo de controlador, en este caso articulos.php, va en minúsculas.
  • El nombre de la clase que implementa el controlador se tiene que llamar igual que el nombre del archivo, pero fijaros que tiene obligatoriamente la primera letra en mayúscula. Por eso aparece como class Articulo extends Controller.
  • Todos los controladores tienen que extender la clase "Controller" (que también tiene la primera letra "C" en mayúscula), que está creada dentro de CodeIgniter y en principio no necesitamos modificarla para nada.

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

Compartir en redes sociales

Comentarios
Fueron enviados 10 comentarios al artículo
6 comentarios no revisados
4 comentarios revisados:
Estupendo
19/3/2010
Estupendo, es bastante fácil la creación de controladores, al menos estos básicos jajaja.

Saludos
Mayusculas o minusculas
23/3/2010
Buenas,hasta ahora tenia claro que cuando se definia la clase que hacia referencia al controlador se escribía con la primera letra em mayusculas,pero al mirar el fichero de configuracion routes.php de mi local me he dado cuenta que viene inicialmente como:

$route['default_controller'] = "welcome";

es decir llamando al controlador en minusculas,En el articulo se dice que debe ser la primera letra en mayusculas,¿Es estrictamente encesario que esto sea así?

Muchas gracias y enhorabuena por este estupendo tutorial

Codify
Problema con Controller
19/4/2011
Resulta que poniendo el extends Controller me dá el error de que no encuentra la clase Controller.
Si pongo extends CI_Controller si que funciona bien...que estoy haciendo mal?
sobre CI_Controller
09/1/2012
lo que pasa es eso mismo en las versiones 2.0 en adelante se usa CI_Controller en vez de Controller...

asi de sencillo..

un muy buen framework...

saludos a todos desde Cuba..

Manuales relacionados
Categorias relacionadas
El autor
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...