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