Modulos con Zend Framework

application/		<--- dir de aplicaciones
    bootstrap.php	<--- no es mi intención explicar que es esto
    default/		<--- modulo que se muestra de forma predeterminada
        controllers/	|
        models/		| --- no es mi intención explicar que es esto
        views/		|
    admin/		<--- modulo de administracion
        controllers/
        models/
        views/
    foro/		<--- modulo del foro
        controllers/
        models/
        views/
html/			<--- directorio público, es decir el que se ve en internet
    index.php		<--- sólo tiene
library/		<--- pon aqui las librerias de Zend y las tuyas

Todo esto muy ordenado ¿no? como sea, si no les gusta, den un vistazo a Zend Controller Modular.

Ahora debo decirle al front controller donde buscar los módulos, para hacer eso modifico el archivo de bootstrap (para mi aplications/bootstrap.php) y busco:

setControllerDirectory('../application/controllers');
[...]

y lo cambio por:

addModuleDirectory('../application');
[...]

y… ¡ta-tan! eso hace la magia.

Todos los controllers que añadamos a application/default/controllers/ se usan igual que siempre. Pero por ejemplo para que
application/admin/controllers/IndexController.php funcione este archivo debe ser:


Si lo ven igual que cualquier controller presten atención a la línea 2 se crea la clase extendidad con Admin_ como inicio de nombre.

Por ultimo, para acceder a los diferente módulos supongamos que nuestro servidor es localhost y ahí tenemos instalado Zend. En general se tiene acceso del modo http://localhost/[modul]/[controller], con excepción de modulo default que ademas se tiene acceso de la forma http://localhost/[controller]. Supongo que hay que tener cuidado de no nombrar un controlador del modulo predeterminado de igual modo que algún otro módulo.

Saludos,
Paris.