Organización de controladores en sub-carpetas

1,302 views
Skip to first unread message

Toltecatl

unread,
Nov 18, 2008, 11:30:36 AM11/18/08
to CodeIgniter-spanish
A medida que he entrado en el MVC world, he tenido necesidades
específicas, una de ellas, ha sido organizar los controladores/modelos/
vistas en subcarpetas, para evitarme un desgarriate de información.
Por ende, me gustaría saber ¿cómo mandar a llamar un controlador desde
routes.php del directorio de config?.
El manual de CI marca que la estructura de mis archivos es correcta,
pero no sé como mandarlo llamar.

**Archivo routes.php:

$route['default_controller'] = "sub_carpeta/c_controlador";

**Estructura de archivos:

system/
application/
config/
controllers/
sub_carpeta/
c_controlador.php
models/
sub_carpeta/
m_modelo.php

Espero recibir orientación, gracias.

Nahuel Bulian

unread,
Nov 18, 2008, 1:33:06 PM11/18/08
to codeignit...@googlegroups.com
No entendí bien la pregunta, pero en mi caso lo tengo configurado como describís en tu email:

$route['default_controller'] = "sub_carpeta/controlador";

Saludos.
NB
--
Saludos
NB.
MSN: NBu...@GMail.com
GTalk: NBu...@GMail.com

Antes de imprimir, pensá en el medio ambiente.
Before printing, think about the environment.
Avant d'imprimer, pensez à l'environnement.

BARBAZUL

unread,
Nov 18, 2008, 3:26:06 PM11/18/08
to codeignit...@googlegroups.com
yo tuve problemas con esto en alguna version hace un tiempo. Creo que fue con la 1.4 o la 1.5 (la que primero implemento el tema de las subcarpetas)
Sin embargo en la ultima version (1.7) anda perfectamente de la manera que lo tenes implementado vos

Algunas aclaraciones, just in case:
  1. tu route es sub_carpeta/c_controlador, por lo que asegurate que la carpeta se llame sub_carpeta (todo en minusculas) el archivo del controlador se llame c_controlador.php (todo en minusculas) y el nombre de la clase sea C_controlador (mayuscula solo la primera C)
  2. Asegurate que el controlador tenga un metodo index() o en su defecto, un metodo _remap() y que tenga visisibilidad public (en ambos casos)
  3. Si te esta dando un mensaje de error, ¿de que clase de error se trata? ¿404? esa informacion puede ser util para ayudarte a solucionarlo
Saludos

Pedro Navarro Monter

unread,
Nov 19, 2008, 12:05:34 PM11/19/08
to codeignit...@googlegroups.com


2008/11/18 BARBAZUL <tere...@gmail.com>

Cómo expliqué en un principio la configuración de mi CI no funciona correctamente, me dá un error 404.
He respetado las reglas de nomenclatura de archivos y classes, estoy usando php5

subcarpeta/arhivo c_controlador.php:
class C_controlador extends Controller {
  function __construct () {
    parent:Controller();
  }
}


Y el config, como lo mencioné anteriormente
$route['default_controller'] = "recepcion";

No sé si deba cambiar 'default_controller'.

Gracias.

--
-----BEGIN GEEK CODE BLOCK-----
GCS !d- s++:++ a? c+++ BL u+++ P+ L+ E! W+++
N O? W! O M V? PS PE++ Y PGP+ T S? X++ R? tv-
b DI+++ D+ G++ e++ h---- y+-- z+
------END GEEK CODE BLOCK------

BARBAZUL

unread,
Nov 19, 2008, 7:18:37 PM11/19/08
to codeignit...@googlegroups.com
Asumo que te equivocaste al copiar y pegar el default controller y quisiste poner:
$route['default_controller'] = "c_controlador";

De cualquier manera tendrías que cambiarlo. En el default_controller tenes que incluir la subcarperta de la siguietne manera
$route['default_controller'] = "sub_carpeta/c_controlador";

probaste con eso?

Además, tenes que tener un método index() en la clase C_controlador y en tu ejemplo no proporcionas uno.

Si todo esto te falla, ya no sé que más estaria faltando

saludos

Pedro Navarro Monter

unread,
Nov 21, 2008, 11:07:47 PM11/21/08
to codeignit...@googlegroups.com


2008/11/19 BARBAZUL <tere...@gmail.com>

Probablemente, sí me equivoqué, aunque bueno, agradezco su tiempo y consejos.
Reply all
Reply to author
Forward
0 new messages