Foros del Web » Programando para Internet » PHP » CodeIgniter »

CodeIgniter. Controlador por defecto en subdirectorio

Estas en el tema de CodeIgniter. Controlador por defecto en subdirectorio en el foro de CodeIgniter en Foros del Web. Hola, estoy comenzando a hacer un sistema de Gestión Documental para el lugar donde trabajo, ya tengo el login - logout y me funciona perfectamente, ...
  #1 (permalink)  
Antiguo 05/10/2010, 07:49
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Pregunta CodeIgniter. Controlador por defecto en subdirectorio

Hola, estoy comenzando a hacer un sistema de Gestión Documental para el lugar donde trabajo, ya tengo el login - logout y me funciona perfectamente, lo que pasa es que esta parte la tengo de la siguiente manera, Gestion-Documental/cpanel/, osea, el panel de control lo tengo dentro de un subdirectorio, pues me es más cómoda esa manera de organizar el trabajo.

El asunto es que para acceder al panel de control se hace por la ruta Gestion-Documental/cpanel/cpanel, pues ese es el nombre del controlador que me llama a las vistas de cpanel. Mi duda es: que si los usuarios acceden de esta manera Gestion-Documental/cpanel/ entonces tengo un error 404.

He pensado en posibles soluciones:

1. Con un archivo .htaccess en la raíz del subdirectorio, algo así:
Código:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase cpanel/cpanel/
</IfModule>
pero no funciona

2. Crear un controlador por defecto para este subdirectorio, que estuve mirando por la web y no encontré nada, y no tengo la menor idea de como hacerlo, y si CI lo hace, pues debo haberme saltado algún capítulo de la documentación...

3. Tengo un controlador por defecto en el archivo routes.php
Código PHP:
Ver original
  1. $route['default_controller'] = "home/home";
y pudiera cambiar este por:
Código PHP:
Ver original
  1. $route['default_controller'] = "cpanel/cpanel";
entonces cambiar algunas cosas en el controlador cpanel, para que en lugar de que al verificar si la session está iniciada me redireccione al login, lo haga al home y en este poner un (simple y mísero) link al cpanel, pero realmente me parece poco convencional

Creo que la explicación está un poquito engorrosa, pero espero me entiendan...

Saludos y gracias por adelantado...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 05/10/2010, 09:00
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Creo que no te estoy entendiendo bien, pero a como lo entiendo lo que tienes que hacer es crear un controlador para el index, donde lo unico que hara es cargar la vista que ya tienes actualmente del cpanel
  #3 (permalink)  
Antiguo 05/10/2010, 09:31
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Uhmmm... he hecho algo así, he cambiado el nombre del controlador y la clase cpanel por index y no funciona como quiero...

Sucede esto, tengo una url así: http://localhost/Gestion-Documental/ aquí carga el controlador por defecto que es home

Y tengo otra que es así: http://localhost/Gestion-Documental/cpanel/cpanel ... pero que pasa si los usuarios acceden de esta manera -> http://localhost/Gestion-Documental/cpanel/ ...

La forma en que dices, es hacer algo como http://localhost/Gestion-Documental/cpanel/index y al final es lo mismo...

Gracias por la ayuda de todas formas, siempre es bien recibida
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 05/10/2010, 09:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Trata algo así en el directorio principal en el archivo .htaccess
Código Apache:
Ver original
  1. # % -> Esta línea la puedes borrar, es para evitar un error con el highlight
  2. RewriteEngine On
  3. RewriteCond %{REQUEST_FILENAME} -s [OR]
  4. RewriteCond %{REQUEST_FILENAME} -l
  5. RewriteRule ^.*$ - [NC,L]
  6. RewriteRule ^.*$ cpanel/cpanel/index.php [NC,L]
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 05/10/2010, 09:49
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Cita:
Iniciado por abimaelrc Ver Mensaje
Trata algo así en el directorio principal en el archivo .htaccess
Código Apache:
Ver original
  1. # % -> Esta línea la puedes borrar, es para evitar un error con el highlight
  2. RewriteEngine On
  3. RewriteCond %{REQUEST_FILENAME} -s [OR]
  4. RewriteCond %{REQUEST_FILENAME} -l
  5. RewriteRule ^.*$ - [NC,L]
  6. RewriteRule ^.*$ cpanel/cpanel/index.php [NC,L]
Noup... tal vez si me explicas podré entender y meter los dedos al código, que de .htaccess no sé nadita de nada
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 05/10/2010, 09:54
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

A mi entender en vez de asi:
http://localhost/Gestion-Documental/cpanel/index

Deberias poder acceder de esta otra manera:
http://localhost/Gestion-Documental/cpanel/

Pero si dices que no, entonces lo creere y para la siguiente vez tratare de probarlo antes
  #7 (permalink)  
Antiguo 05/10/2010, 10:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Está raro. Yo creo un directorio llamado test (claro para poder hacer la prueba, con el problema que tienes), dentro de ese directorio tengo un archivo llamado .htaccess y un directorio llamado cpanel y otro dentro de ese llamado cpanel y dentro de ese último uno llamado index.php.
Código directory:
Ver original
  1. test
  2.     .htaccess
  3.     cpanel
  4.         cpanel
  5.             index.php
Cuando llamo por ejemplo http://localhost/test y en el archivo htaccess tengo lo que te indiqué, me muestra el contenido de cpanel/cpanel/index.php. Qué es lo que hace el htaccess la letra -s lo que indica es que si existe un archivo ejecute el primer rewriterule y la letra -l verifica si es un enalce simbólico. El primero RewriteRule lo que hace es no sobre-escribir la ruta ya que sí existe lo que estás buscando. Si no se cumple ninguna de las dos rewritecond, salta el primer rewriterule y pasa al segundo para redireccionar al archivo específico que le mencioné.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 05/10/2010, 10:35
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

@abimaelrc recuerda que estoy trabajando con CodeIgniter, lo que pasa aquí es que cpanel es un controlador que está en: /www/Gestion-Documental/system/applications/controllers/cpanel/cpanel.php y en la url lo que hago es llamar al controlador Gestion-Documental/cpanel/cpanel ... Mira aquí para que entiendas como funciona el asunto...

¿Y que tal si pongo el .htaccess en la raíz del directorio cpanel/? ¿Qué debería hacer en ese caso?
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #9 (permalink)  
Antiguo 05/10/2010, 10:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Ups, perdona lo leí, pero me envolví en lo que te respondía. De verdad que lamento el no poderte ayudar en esa área, ya que no conozco ese framework . Espero que encuentres pronto la solución.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 05/10/2010, 10:57
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 6 meses
Puntos: 890
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

Suponiendo que tienes una carpeta llamada cpanel dentro de tu carpeta principal controllers
Por que no usas el routeador que para eso esta:

$route['cpanel/(.*)'] = 'cpanel/cpanel/$1'

Deberia de funcionar, obviamente todas las rutas relacionadas a la carpeta cpanel deben de estar como si la carpeta cpanel contenedora no existiera.

Ejm de un link http://web.com/cpanel/action

No se si es lo que quieres, aunque para estos meneseteres ya se ha creado un complemento para hacerlo modular y es HMVC. http://bitbucket.org/wiredesignz/cod...hmvc/wiki/Home

Cualquier duda, sigue preguntando ;)
__________________
Drupal Argentina
  #11 (permalink)  
Antiguo 06/10/2010, 07:34
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Respuesta: CodeIgniter. Controlador por defecto en subdirectorio

La solución ha sido sencilla, mucho más de lo que me imaginaba, he agregado el ruteador:
Código PHP:
Ver original
  1. // Controlador por defecto para el directorio cpanel
  2. $route['cpanel'] = 'cpanel/cpanel';
Y va de maravillas, gracias @NUCKLEAR por el link, muy bueno, ya lo he agregado a mi delicious
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:24.