Sigueme por RSS! RSS

CodeIgniter: un core, varias aplicaciones..


CodeIgniter (CI) al igual que otros frameworks como Yii, permite adaptar un único core a multiples aplicaciones.. Para ello hay que seguir varios pasos y a continuación los listamos:

nota
Para el ejemplo nuestro directorio de servidor es /var/www, estamos bajo ambiente GNU/linux y usamos la versión 2.1.3 de CodeIgniter.
Recuerda siempre respaldar tus proyectos antes de hacer algún cambio.

1.- La descarga:
     - descargas CI.

2.- Descomprimir: 
     - descomprimes el zip descargado en tu carpeta del servidor (www en mi caso).

3.- Renombrar:
     - renombras la nueva carpeta generada (yo le coloque sistemas). Ahora, si entramos desde el navegador a localhost/sistemas, debería mostrarnos la vista por defecto de CodeIgniter.

4.- Crear las aplicaciones:
     - multiplicas la carpeta application tantas veces como sistemas necesites y la renombras según sea el caso; Cada aplicación debe disponer de su carpeta completa de application, es decir, sabemos que en ese directorio se alojan sub-carpetas que albergaran entre otras cosas, los controladores, modelos, vistas, etc. entonces, al separar nuestros sistemas por aplicación, mantenemos el orden recomendado a la hora de trabajar, por ejemplo:
/www
... sistemas
....... aplicacion1
........... models (modelos de la aplicación 1)
........... controllers (controladores de la aplicación 1)
........... views (vistas de la aplicación 1)
........... (otros directorios de la aplicación 1)
....... aplicacion2
........... models (modelos de la aplicación 2)
........... controllers (controladores de la aplicación 2)
........... views (modelos de la aplicación 2)
........... (otros directorios de la aplicación 2)


5.- El index por aplicación:
      - CI trae por defecto un archivo index.php que apunta al core y a la carpeta application, nosotros debemos disponer de un archivo index para cada aplicación, obviamente no puede haber más de un archivo con el mismo nombre en el mismo directorio, así que tenemos varias opciones.


5a.- Mostrar una aplicación por defecto:
       - Hay que tomar en cuenta si habrá un sistema por defecto, es decir, si queremos que al entrar a localhost/sistemas se cargue una aplicación directamente, en ese caso podemos dejar que index.php apunte a aplicacion1 y creamos otro index que apunte a aplicacion2 (aplicacion2.php).

 Para apuntar index.php a aplicacion1, debemos abrir el archivo y buscamos la linea:
$application_folder = 'application';

y cambiamos el valor de la variable application_folder por el nombre de nuestro sistema principal (aplicacion1 para el ejemplo).

Fijate que un poco más arriba aparece la variable system_path:
$system_path = 'system';

su valor deberá ser actualizado en caso de que hayamos estado cambiando de lugar el core de CI para su protección.

Cuando corramos localhost/sistemas debe mostrarnos el sistema por defecto, si colocamos mal el nombre del sistema, nos aparecerá el siguiente mensaje:
Your application folder path does not appear to be set correctly. Please open the following file and correct this: index.php

Tambien podriamos acceder a ese sistema por defecto, colocando localhost/sistemas/index.php.

Luego para la aplicación 2 sólo duplicamos ese archivo index y lo renombramos (aplicacion2 para el ejemplo), una vez tenga su propio index y hayamos editado ese archivo apuntando así a la aplicación 2:
$application_folder = 'aplicacion2';

 y al core correctamente, ya lo podemos llamar desde la URL: localhost/sistemas/aplicacion2.


5b.- Mostrar un menú con la lista de sistemas (por defecto):
       - Si por el contrario, deseamos que por defecto aparezca un menú mostrando la lista de aplicaciones, entonces, hacemos lo siguiente:
- renombramos el index.php con el nombre de nuestro primer sistema (aplicacion1.php para el ejemplo).
- duplicamos ese archivo tantas veces sea necesario y lo renombramos con el nombre de los sistemas restantes (en este caso sólo falta la aplicación 2 así que lo renombramos a aplicacion2.php).
- creamos un nuevo archivo llamado index.html y dentro agregamos la lista de aplicaciones:
<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="utf-8">
        <title>Mis aplicaciones en CodeIgniter</title>
        <style type="text/css">
            ::selection{ background-color: #E13300; color: white; }
            ::moz-selection{ background-color: #E13300; color: white; }
            ::webkit-selection{ background-color: #E13300; color: white; }
            body {
                background-color: #fff;
                margin: 40px;
                font: 13px/20px normal Helvetica, Arial, sans-serif;
                color: #4F5155;
            }
            a {
                color: #003399;
                background-color: transparent;
                font-weight: normal;
            }
            h1 {
                color: #444;
                background-color: transparent;
                border-bottom: 1px solid #D0D0D0;
                font-size: 19px;
                font-weight: normal;
                margin: 0 0 14px 0;
                padding: 14px 15px 10px 15px;
            }
            #body{
                margin: 0 15px 0 15px;
            }
            #container{
                margin: 10px;
                border: 1px solid #D0D0D0;
                -webkit-box-shadow: 0 0 8px #D0D0D0;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <h1>Mis Sistemas</h1>
            <div id="body">
                <ul>
                    <li><a href="aplicacion1.php">Aplicación #1</a></li>
                    <li><a href="aplicacion2.php">Aplicación #2</a></li>
                </ul>
            </div>
        </div>
    </body>
</html>

Al final, deberíamos tener algo así:
/www
... sistemas
...... aplicacion1.php
...... aplicacion2.php
...... index.html
...... aplicacion1
......... models
......... controllers
......... views
......... otros directorios
...... aplicacion2
......... models
......... controllers
......... views
......... otros

y al acceder a localhost/sistemas, mostrarnos el menú.

Si tienes algún problema, no dudes en consultar.

2 comentarios: Suscribete a los comentarios por RSS

Jesús López Morales

Muy buenas, esta muy bien el tutorial, funciona perfectamente.

El tema está ahora en las URLs, porque todo cuelga ahora de, por ejemplo: "localhost/app1.php/welcome" o "localhost/app2.php/welcome".

Como podría quitar (se me habia ocurrido con el htaccess) esa parte de la url?

Un saludo.

Reinaldo Cassiani (cass)

Hola Jesús, la solución es usar htaccess.
Mita este ejemplo: http://www.desarrolloweb.com/articulos/eliminar-index-php-url-codeigniter.html

Publicar un comentario

- Los comentarios están siendo moderados y serán publicados en la brevedad posible.