Creando un nuevo controller en CodeIgniter

Vamos a crear nuestro primer controlador, para luego ir sumando los otros elementos del patrón MVC.

A manera de ejercicio vamos a ir armando, a lo largo de varios posts, una pequeña y sencilla aplicación que nos obligue a loguearnos para que luego podamos realizar alguna tarea (sobre la marcha veremos qué se puede armar).

Siguiendo ésta línea, vamos a crear un controlador que nos obligará a loguearnos. De ésta forma, se convertirá en el controlador por defecto de la aplicación.

Cuando comenzamos a jugar o trabajar con el framework, vamos a ver que nos aparece un mensaje de bienvenida. Justamente, es el controlador Welcome el que se hace presente.

Ahora bien, por qué ese controlador y no otro. Esto se debe a que una de las configuraciones de CodeIgniter nos permite especificar cuál controlador se ejecutará por defecto.

Para saber cuál es o para cambiarlo, debemos acceder al archivo /system/application/config/routes.php y buscar los siguientes valores (serán los únicos no comentados):

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

Vamos a cambiar el valor de default_controller a login. Debe quedarnos de la siguiente forma.

$route['default_controller'] = "login";
$route['scaffolding_trigger'] = "";

Entendido esto, creamos nuestro primer controlador. En la carpeta /system/application/controllers tenemos el archivo welcome.php. Ese es el controlador (el único) que vamos a encontrar.

Hacemos una copia y vamos a llamar al archivo login.php. Al abrir el archivo tendremos el siguiente código.

class Welcome extends Controller {
 
    function Welcome() {
        parent::Controller();
    }
 
    function index() {
        $this->load->view('welcome_message');
    }
}

Lo primero que tenemos que hacer es cambiar el nombre de la clase.

Si prestan atención, dado que el framework es compatible con las versiones 4 y 5 de Php, todas las clases que veremos vienen programadas para Php 4. Esto no quita que nosotros podamos continuar nuestro desarrollo armando nuestras clases en Php 5.

Dicho esto, nuestro controller Login lo haremos de esa forma, así que el cambio no será sólo de nombre, sino que declararemos los métodos como públicos y modificaremos el constructor de la clase.

El resultado debería quedarnos de la siguiente forma.

class Login extends Controller {
 
    public function __construct() {
        parent::Controller();
    }
 
    public function index() {
        $this->load->view('welcome_message');
    }
}

Si bien el controller ya funcionaría, todavía nos faltan algunos detalles para darnos cuenta, efectivamente, que el controlador que va a ejecutarse es el nuestro.

Dentro del método index(), podemos ver que se invoca a la vista welcome_message. Esa vista puede encontrarse en /system/application/views/welcome_message.php. De más está decir que el nombre de la vista se corresponde con el nombre del archivo (sin la extensión).

Siguiendo nuestro primer experimento, vamos a duplicar también ese archivo y vamos a llamarlo login.php. A éste archivo pueden hacerle las modificaciones que consideren necesarias. Ahora tenemos que indicarle al controlador que en lugar de utilizar la vista welcome_message, utilize la nuestra.

El código final nos quedaría de la siguiente forma.

class Login extends Controller {
 
    public function __construct() {
        parent::Controller();
    }
 
    public function index() {
        $this->load->view('login');
    }
}

Y si refrescamos nuestro navegador, veríamos algo similar a ésta pantalla (dependiendo de lo que hayan cambiado en la vista).

Ejemplo de controlador y vista en CodeIgniter

Como ven, resulta bastante sencillo dar los primeros pasos.