Índice de contenidos
Los tres pasos más sencillos para instalar Codeigniter
Después de un tiempo trabajando intensamente con este framework puedo decir que es sencillo de utilizar a la vez que potente y sumamente rápido de poner en marcha. Probablemente haya framework mucho más potentes como Laravel o Symfony, pero a día de hoy todavía no ha pasado por mis manos un proyecto que no haya podido darle una solucion con Codeigniter. No es mi intención empezar a enumerar ventajas e inconvenientes ni listar todas las características que tiene porque si estás leyendo este post sabrás de que estoy hablando y querrás entrar en materia cuanto antes.
Descargar codeigniter
El primer paso en toda instalación de una aplicación desarrollada con Codeigniter será el de descargarse la versión actual que esté disponible. Esta descarga siempre es recomendable hacerla desde la web oficial de Codeigniter o lo que es lo mismo, a través del siguiente enlace https://codeigniter.com/download. En este enlace tenemos disponible dos opciones de descarga:
- A través de github: https://github.com/bcit-ci/CodeIgniter
- Mediante un archivo comprimido en formato zip: https://github.com/bcit-ci/CodeIgniter/archive/3.1.5.zip
Tambien tenemos disponible la descarga de las distintas traducciones https://github.com/bcit-ci/codeigniter3-translations/releases/latest.
Aunque también está disponible Codeigniter 2 solo me centraré en la versión 3 que es la más actual.
Codeigniter en el hosting
Una vez descargados los archivos necesarios para realizar la instalación (en mi caso tengo dos archivos: 3.1.5.zip y codeigniter3-translations-3.1.3.zip) el siguiente paso será subir los archivos a nuestro hosting. Yo actualmente tengo todos mis proyectos en ProfesionalHosting.
Para las traducciones tendremos que copiar el contenido de la carpeta descargada codeigniter3-translations-3.1.3/languaje en application/languaje y posteriormente cambiar el archivo config.php
1 |
$config['language'] = 'spanish'; |
Posteriormente se harán más cambios sobre este mismo archivo de configuración.
Configuraciones básicas
Realmente es un framework tan sencillo de utilizar que con muy poca configuración lo tendremos funcionando. Indudablemente después, en el transcurso del proyecto, la configuración se puede ir complicando todo lo que se necesite, pero inicialmente para empezar Codeigniter no necesita apenas configuración.
config.php
Siguiendo las recomendaciones de la página oficial lo primero que tenemos que cambiar es el archivo config.php. Este archivo centraliza la configuración más importante del núcleo y, aunque tenemos disponibles más archivos este que nos ocupa es básico.
Normalmente encontrarás en la mayoría de los sitios que tienes que cambiar manualmente la línea
1 |
$config['base_url'] = "http://www.dominio.com"; |
Como truco recomiendo utilizar las siguientes líneas de código que harán que la base_url se configure de forma automática
1 2 |
$config['base_url'] = "http://".$_SERVER['HTTP_HOST']; $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); |
Si quieres darle soporte para https puedes configurarlo con las siguientes líneas:
1 2 3 |
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http"); $config['base_url'] .= "://".$_SERVER['HTTP_HOST']; $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); |
.htaccess para URLs amigables
El archivo htaccess permite aplicar y definir restricciones de acceso a la web. En concreto, con este htaccess podremos tener URLs amigables.
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA] </IfModule> |
database.php
Una vez configurado el archivo config.php el siguiente paso será configurar la conexión con la base de datos. Para realizar esa configuración necesitaremos editar el archivo database.php. Este archivo no puede ser más intuitivo dejo una muestra de una configuración básica:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'usuario_base_datos1', 'password' => 'password1', 'database' => 'base_datos1', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => TRUE, 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); $db['basedatos2'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'usuario_base_datos2', 'password' => 'password2', 'database' => 'base_datos2', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => TRUE, 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); |
En este fragmento de código se puede ver como configuro dos bases de datos simultáneas de forma que luego podré acceder simultáneamente a cualquiera de las dos desde los modelos.
De todo este código las líneas que normalmente tendremos que modificar será las siguientes:
1 2 3 4 5 |
'hostname' => 'localhost', 'username' => 'usuario_base_datos1', 'password' => 'password1', 'database' => 'base_datos1', 'dbprefix' => 'prefijo_', |
autoload.php
Editando este otro archivo se realizan cargas automáticas de:
- Paquetes
- Librerías
- Drivers
- Helpers
- Archivos de configuracion personalizados
- Lenguajes
- Modelos
Para realizar estas cargas automáticas tan solo tenemos que editar la sección correspondiente. Pongo un ejemplo para que veais a que me refiero:
1 |
$autoload['libraries'] = array('database',"Pdf"); |
routes.php
El archivo routes.php permite enrutados a controladores y métodos. El proceso de enrutado es muy sencillo y sigue la siguiente formula
1 |
$route['ruta personalizada'] = 'Controlador/metodo'; |
Aunque es sencillo lo mejor será que abordemos algunos de los ejemplos más comunes con los que me he encontrado:
1 |
$route["home"] = "home/Home_Controller/indice_metodo"; |
Este ejemplo redirige la ruta http://www.dominio.com/home al controlador Home_Controller. Ese controlador tiene que ser similar al que se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Homa_Controller extends CI_Controller { function __construct() { parent::__construct(); } public function indice_metodo() { echo "Hola "; } } |
Al método tambien podemos pasarle parámetros numéricos. El siguiente ejemplo es una muestra de ello:
1 |
$route["admin/grupos/edit/(:num)"] = "grupo/Grupo_Controller/edit_action/$1"; |
Si no queremos que sean solo números, tambien podemos especificarle que sea alfanuméricos:
1 |
$route["admin/grupos/edit/(:num)"] = "grupo/Grupo_Controller/edit_action/$1"; |
Hay una ruta especial es que la que define la entrada al dominio, es decir, cuando pongamos http://www.dominio.com/ ¿A que Controlador/metodo nos redirigirá? Eso se configura en la siguiente línea:
1 |
$route['default_controller'] = 'home/Home_Controller'; |
Igualmente, otro controlador especial es aquel que define cual será la página de error 404. Este está en la línea siguiente
1 |
$route['404_override'] = 'error/404'; |
Conclusión
Como se puede ver en este post realizar una configuración básica de Codeigniter es sumamente sencillo. Por mi experiencia los problemas suelen venir en la configuración del archivo .htaccess, sobre todo por las particularidades de los servidores o porque la instalación de codeigniter se realice un subdominio.