Gestor de noticias (Segunda parte): Controladores
Recapitulando, habíamos creado nuestra plantilla y luego la habíamos divido en una cabecera y un pie de página.
En este capitulo crearemos nuestro primer controlador, veremos algún ejemplo de funcionamiento con el típico “Hola Mundo!” y algunos otros detalles.
Para empezar explicaré cómo funciona todo esto de los controladores. Como expliqué en la “primera parte”, los controladores son los que coordinan las vistas, el “código” y los modelos. La arquitectura de un controlador es una clase, dónde cada función responderá según nuestra URL, me explico:
http://www.tu-web.com/(index.php)/controlador/función/[variables]
Es decir, en nuestro links definiremos que controlador cargar, que función dentro de este controlador ejecutaremos y si necesitamos, pasar variables (todas las que queramos).
Nota: index.php lo puse entre paréntesis porque por defecto necesitaremos llamarlo así, pero luego queda mucho mas bonito quitarlo, por lo que deberíamos usar ModRewrite, pero en eso ya entraremos más adelante.
Veamos un ejemplo:
http://www.tu-web.com/index.php/noticias/leer/8
Aquí estaríamos llamando a nuestro controlador de noticias, que tendrá dentro una función llamada leer y que le pasaremos como variable ($_GET) el entero 8.
Es bastante sencillo ¿no?
Ahora pasemos al código. Los controladores en CodeIgniter se sitúan en la carpeta “controllers” (como todo, irá dentro de la carpeta system/application/..), y estos tendrán el mismo nombre que pasamos por URL. Es decir para cargar el ejemplo de antes, el archivo se llamara noticias.php.
Luego, el esquema básico de los controladores es:
class Nombre_del_controlador extends Controller{
function Nombre_del_controlador(){
parent::Controller();
}
function funcion(){
//...
}
}
Siguiendo el ejemplo de antes crearemos un controlador llamado “noticias.php“, con una función “leer” y que recoja la variable “8″:
class Noticias extends Controller{
function Noticias(){
parent::Controller();
}
function leer(){
$numero = $this->uri->segment(3);
echo "Hola Mundo numero ".$numero;
}
}
Aquí introducimos un nuevo concepto. CodeIgniter tiene un montón de librerías y “helpers” (ayudantes), una vez cargados, podemos acceder a ellos con:
$this->(nombre_de_la_libreria)->(funcion)
La función “uri->segment(int)” nos devolverá el parámetro de nuestra URL, parecido al $_GET. Es decir, con el ejemplo, “$this->uri->segment(1)” nos devuelve “noticias” y “$this->uri->segment(2)” nos devuelve “leer”.
Y esto es todo para este taller de hoy. Poco a poco vamos avanzando, para el siguiente empezaremos a crear nuestra base de datos y aprenderemos a configurarla, para posteriormente poder usar las librerías correctamente.

Enhorabuena por tus explicaciones.
Un apunte. Creo que hay un error. Donde dices:
”$this->uri->segment(4)” nos devuelve “leer”
debería ser:
“$this->uri->segment(2)” nos devuelve “leer”
Gracias
Es totalmente cierto, se me paso ese detalle. Gracias! Ahora mismo lo modifico.
no me funciona
me aparece lo sgte:
Fatal error: Call to undefined function: base_url() in C:\mowes_portable\www\gn\system\application\views\cabecera.php on line 6
he configurado una y otra vez todo y nada…
gn es mi carpeta codeigniter y hic los correspondientes cambios en config.php
me pueden ayudar
thx!
sorry mi comentario anterior corresponde a la tercera parte
es esta linea especificamente: “<base href=”" />” de la cabecera
lo arreglo asi: “”
pro me sale otro error:
Fatal error: Call to a member function on a non-object in C:\mowes_portable\www\gn\system\application\controllers\noticias.php on line 14
ke corresponde a :”Gestor de noticias” de la cabecera, no se ke hacer
:S
gracias por tu tiempo y ayuda
quizá te olvidaste de cargar las librerías de URL, en el autoload.