Codeigniter, parte 1: Introducción y configuración

Bueno, sinceramente no pensaba hacer un tutorial de Codeigniter como sí lo hice con Laravel, por ejemplo. El motivo es muy simple, y es que por suerte hay mucha documentación, muy buena y en español de este excelente framework. Sin embargo Codeigniter es el que más veces he usado en mi vida, en proyectos chicos y no tan chicos. Mucha gente me envía correos a mi casilla preguntándome de qué se trata el MVC, algo que al principio a mí me costó entender y gracias Codeigniter me resultó muy fácil, y más tarde lo plasmé en este blog con Laravel y Ruby on Rails. Por tanto, y después de tantas vueltas he decidido dedicarle algunos capítulos que empiezan desde hoy a un viejo conocido.

En primer lugar, Codeigniter es muy fácil de aprender y de implementar. Tal vez no sea un framework tan grande como Symfony o Laravel, pero trae consigo esas ruedas que debemos reinventar cada vez que intentamos crear un proyecto sin framework.

Instalación

Para instalar Codeigniter simplemente iremos a la página de Ellislab:

https://ellislab.com/codeigniter

Buscamos el botón Download y lo descargamos.

Descomprimimos el archivo y copiamos el proyecto dentro de nuestro localhost. En mi caso como yo uso Xampp lo haré dentro de htdocs.

En lo posible le cambiamos el nombre al proyecto, yo le pondré simplemente ci.

Una vez realizado este proceso ingresamos al proyecto mediante la url, correspondiente. En mi caso:

https://localhost/ci

Si aparece un mensaje de bienvenida (en inglés) vamos bien:

Welcome to CodeIgniter!

 

Configuración

El proyecto contendrá varias carpetas y sub carpetas, no es necesario que sepas lo que hacen todas, pero varias de éstas las iremos conociendo a medida que conozcamos el framework.

En principio iremos a index.php, y vamos a buscar la siguiente línea:

define('ENVIRONMENT', 'development');

Es importante tener presente una cosa: el valor: «development», como su nombre lo indica, comprenderá el proyecto está corriendo en un entorno de desarrollo. Al momento de subir el proyecto a producción deberíamos cambiar ese valor a «production»:

define('ENVIRONMENT', 'production');

La diferencia entre ambos es muy clara, en desarrollo de haber errores los mostrará por pantalla, en producción por cuestiones de seguridad no lo hará.

Pero como estamos trabajando en desarrollo, dejaremos esta línea como está, en «development».

El segundo paso a seguir es ir dentro de application -> config -> config.php, aquí editaremos este archivo. Vamos a buscar la siguiente línea:

$config['base_url'] = '';

Lo cambiamos por el valor de la la url de nuestro proyecto:

$config['base_url'] = 'https://localhost/ci';

(Recordar que ci, recibirá el nombre del proyecto decidiste poner)

Esto, al ser subido a producción también debería cambiar su valor, que será la url donde está alojado tu sitio:

$config['base_url'] = 'http://tusitio.com';

 

Modelo Vista Controlador

Codeigniter utiliza el patrón de diseño MVC. Los modelos son clases que representan las entidades de datos, y sus métodos las acciones de las mismas. Las vistas, son el código html que se le devuelve al cliente, aunque también pueden contener código PHP, como echo, if o foreach. Finalmente los controladores serán donde se incluye la lógica, se comunicarán con los modelos para obtener datos de la base de datos y con las vistas para mostrar los resultados. Por el momento dejaremos los modelos de lado, veremos cómo funcionan los controladores y su relación con las vistas.

Cuando ingresamos por primera vez a nuestro proyecto, a través de su respectiva url, vimos por pantalla el mensaje de bienvenida. Para ello podemos dirigirnos primero a  application -> controllers, aquí deberíamos encontrar un archivo con extensión .php llamado welcome.php, vamos a abrirlo.

En primera instancia vamos a ver el nombre del controlador, que es Welcome. Éste será la nombre de la clase y va a heredar de una clase propia de Codeigniter, llamada CI_Controller. No es importante que sepamos qué hace esta clase, pero sí es importante entender que cada controlador que creemos deberá heredar de esa clase CI_Controller. También veremos una acción llamada index(), ésta la acción principal de este controlador.

La misma contiene el siguiente código:

public function index() {
   $this->load->view('welcome_message');
}

Mediante el objeto load y el método view(), podremos cargar una vista, que es la que se llama en el parámetro: ‘welcome_message’. Esta vista podremos encontrarla dentro de application -> views -> welcome_message.php.

Para acceder a esa acción, simplemente debemos ingresar a la url principal de nuestro proyecto, porque está configurado para que esa acción sea el inicio de nuestra aplicación, aunque también podríamos hacerlo de la siguiente forma:

https://localhost/ci/index.php/welcome/index

Sin embargo, index(), como dijimos, es la acción principal de cada controlador, por tanto, si ingresamos el nombre del controlador, mas no el de la acción, se buscará por defecto index(). Si hiciéramos lo siguiente:

https://localhost/ci/index.php/welcome

Deberíamos visualizar lo mismo.

Creando nuestra primer acción

Seguiremos viendo controladores y vistas más adelante, pero por el momento, y para finalizar el primer capítulo, vamos a crear nuestra primer acción. Para ello iremos a application -> controllers y dentro crearemos un archivo con un nombre cualquiera, en mi caso será controlador_test.php, el cual tendrá el siguiente código:

<?php
if (!defined('BASEPATH'))
   exit('No direct script access allowed');
class Controlador_test extends CI_Controller { 
   public function index(){
      echo 'Página inicial del controlador';
   } 
   public function accion2(){
      echo 'Página 2';
   } 
   public function accion3(){
      echo 'Página 3';
   } 
}

Notar que el nombre del archivo está en minúscula, pero el nombre de la clase debe tener el primer caracter en mayúscula.

Ahora para acceder a las tres acciones del controlador deberíamos hacerlo mediante las siguientes urls:

Para index():

https://localhost/ci/index.php/controlador_test/index

Para accion2():

https://localhost/ci/index.php/controlador_test/accion2

Y finalmente para accion3():

https://localhost/ci/index.php/controlador_test/accion3

Aunque a la primera, al ser llamada index(), con ingresar sólo el nombre del controlador basta:

https://localhost/ci/index.php/controlador_test

Bueno, con esto finalizamos por el momento. Más adelante veremos más de controladores, y también modelos y vistas.

Saludos!

Siguiente: Codeigniter, parte 2: Eliminar index.php de la url


16 Respuestas a “Codeigniter, parte 1: Introducción y configuración”

    1. Jajaja, sí. Dedico esta publicación al Justin Bieber de la programación. Después tenemos al diseñador Barney, digo Charley.

      Abrazo!

  1. Ferchu,primero que todo gracias por tus tutoriales, son muy buenos y practicos. Ahora sobre el tema de los controladores, leyendo la documentacion de CodeIgniter este dice que el nombre del archivo del controlador debe tener la primera letra en mayusculas ( http://www.codeigniter.com/user_guide/general/controllers.html ), ahora igual funciona como tu lo dices. Sabes si afecta en algo en que la primera letra del archivo este en mayusculas o minusculas?? Por que funcionalmente si funciona.

    Saludos

    1. Sí, en realidad en la última versión, que es la 3 (punto algo), es como vos decís, seguramente leíste la documentación más reciente, y bueno sí.

      Esta publicación fue escrita durante la versión 2, por tanto hay muchas cosas que cambiaron.

      Saludos!

  2. Hola buen dia,
    Necesito de la ayuda de ustedes por favor.. Resulta que estoy aprendiendo codeigniter ya instale mi servidor local con wamp server y por supuesto copie las carpetas donde viene el framework en la raiz del servidor, tal cual como dan las indicaciones de instalacion, ejecuto mi localhost y abre normalmente , si ejecuto localhost/»ci», me muestra el mensaje de bienvenida y hasta hay, todo bien, todo bonito. Pero cuando intento ejecutar cualquier aplicacion por muy basica que tenga , asi sea solo un echo para mostrar en pantalla me generael error «No direct script access allowed». Ya configure mi URL local en el archivo config, y he hecho cada uno de los pasos de instalacion que he visto, no solo por aca si no por muchos mas tutoriales , pero siempre me genera el mismo error , «No direct script access allowed», me he fijado en las minusculas y mayusculas he intentado colocando en la direccion el index.php, sin este , he hecho todas las soluciones a este problema.. pero aun no me funciona.. Por favor si alguien me puede ayudar!!! muchas gracias..

  3. hola, excelente tutorial, solo te queria hacer la acotacion de que en las paginas de este tutorial pongas un link directo a cualquiera de las partes del turotial, no solo un link a la parte anterior y siguiente, ya que me paso varias veces que por ejemplo desde la parte 7 queria saltar a la parte 2 y no podia hacerlo directamente, solo eso, muchas gracias por el material