¿Cómo se configura Codeigniter para manejar múltiples proyectos con una base ci compartida?
-
20-09-2019 - |
Pregunta
He visto varios ejemplos de implementación de CI que afirman que puedes colocar carpetas de proyectos en la carpeta "aplicaciones" de Codeigniter.
Sin embargo, no he podido ver este trabajo como se prometió.
Esto es lo que he hecho y lo que me gustaría hacer; tal vez puedas ayudarme.Por el bien del argumento, la raíz de mi documento es /www/ (no lo es, pero usémosla por simplicidad)
Puse el núcleo de Codeigniter en /www/corelib/codeigniter
Puse la carpeta del sistema codeigniter en /www/ci_system
He puesto el directorio de aplicaciones en /www/applications
Puse mi "punto de entrada" en /www/dd
Ahora digamos que tengo dos proyectos:"entrada de datos" y "cpanel"
La idea es que puedo ir a
h**p://mydomain/dd/dataentry // para la aplicación de entrada de datos y
h**p://midominio/dd/cpanel // para la aplicación cpanel.
SI organizo los directorios de entrada de datos y cpanel de esta manera:
/www/aplicaciones/controladores/entrada de datos
/www/aplicaciones/controladores/cpanel
/www/aplicaciones/modelos/entrada de datos
/www/aplicaciones/modelos/cpanel
/www/aplicaciones/vistas/entrada de datos
/www/aplicaciones/vistas/cpanel
Puedo hacer que esto funcione bien.Sin embargo, lo que me gustaría hacer es mantener el modelo y la vista al mismo nivel que el controlador para tener lo siguiente:
/www/aplicaciones/entrada de datos/controladores
/www/aplicaciones/entrada de datos/modelos
/www/aplicaciones/entrada de datos/vistas
/www/aplicaciones/cpanel/controladores
/www/aplicaciones/cpanel/modelos
/www/aplicaciones/cpanel/views
Parece que esto no funciona.
¿Alguna sugerencia?
-CF
Solución 2
Bien - Tengo este trabajo si lo deseas. Voy a tratar de escribir una más extensa de "cómo hacer" y proporcionará un enlace en la sección de comentarios.
Yo no tenía que modificar .htaccess ya que requiere CI - Yo estaba feliz por eso. Mi entrada de directorio siguiente aspecto:
/dd/index.php
Las dos piezas clave son aquí:
list($blank, $webpath, $app) = explode('/', $_SERVER['REQUEST_URI']);
$application_folder = $_SERVER['DOCUMENT_ROOT]."/applications/$app";
Esto permite que un solo index.php para manejar todas las aplicaciones.
La parte que me faltaba es que appName ahora debe también ser el controlador primario o ser un directorio dentro de los controladores. (El verdadero problema que tuve fue que me piratería, por lo tanto que tuve configuraciones y rutas que me impide darse cuenta de lo que estaba viendo en realidad:. A veces a partir limpia es imprescindible)
Otros consejos
¿Tiene cada aplicación ( "entrada de datos" y "cpanel") tienen su propio archivo index.php principal que define la variable $ application_folder apropiado?
También - y estoy seguro de que usted ha leído los documentos - pero documentación de CodeIgniter indica que el directorio / aplicaciones (o directorios, en su caso) deben existir en el directorio / sistema de la siguiente manera:
system/application/foo/
system/application/foo/config/
system/application/foo/controllers/
system/application/foo/errors/
system/application/foo/libraries/
system/application/foo/models/
system/application/foo/views/
system/application/bar/
system/application/bar/config/
system/application/bar/controllers/
system/application/bar/errors/
system/application/bar/libraries/
system/application/bar/models/
system/application/bar/views/