Zend 1.9 usando Netbeans 7.0 – Usar modulos

Usar modulos.

Preparación:

Los modulos son usados para agrupar funcionalidad comun en Zend, asi se puede tener un modulo para busquedas, otro para perfil y otro para noticias.
Las razones para usar modulos son :
* El codigo organizado en modulos produce un arbol de codigo estructurado, porque todos los controladores, modelos y vistas relacionados con una cierta funcionalidad o conjunto de funcionalidades son almacenadas dentro del mismo arbol de directorio.
* Organizar el codigo en modulos anima la creacion de software mas robusto y flexible.

Como se hace :

Netbeans.

Crear un modulo.

Clic derecho en el proyecto Zend->Zend-> Run Command…
Se abrira la ventana Run Zend Command (Nombre Proyecto)
Seleccionar en la lista Matching Tasks create module : name
En Parameters escribir el nombre del modulo a crear y dar clic en el boton Run.
Ver que conforme se escribe en Parameters, en el casillero Command se actualiza la orden con los nuevos parametros.
Si se va a usar mas veces esta ventana, marcar la casilla : Keep this dialog opened para mantenerla abierta.

Crear el modulo default.

Siguiendo los pasos anteriores crear un modulo con el nombre default.
Segun sea el caso eliminar o mover los directorios controllers, models y views del directorio $APP_DIR/application al modulo recien creado $APP_DIR/application/modules/default.
Para mover los directorios, clic derecho en los folders->Cut, y en el directorio $APP_DIR/application/modules/default dar clic derecho->Paste.

Actualizar el archivo de configuración de Aplicación.

Este archivo no es otro que $APP_DIR/application/configs/application.ini al que se le agregara la localizacion del directorio de los modulos.
Para actualizarlo se agregara lo sgte. a la sección [production] :

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""

Con Zend Tool.

Crear un modulo.

Abrir una ventana de comandos con permisos de Administrador y ubicarse en el directorio raiz de la aplicacion.
Ingresar el sgte comando :

zf create module mimodulo

Y como resultado se obtendra una salida con este formato :

Creating the following module and artifacts:
[directorio de la aplicacion]/application/modules/mimodulo/controllers
[directorio de la aplicacion]/application/modules/mimodulo/models
[directorio de la aplicacion]/application/modules/mimodulo/views
[directorio de la aplicacion]/application/modules/mimodulo/views/scripts
[directorio de la aplicacion]/application/modules/mimodulo/views/helpers
[directorio de la aplicacion]/application/modules/mimodulo/views/filters
Added a key for path module directory to the application.ini file
Updating project profile [directorio de la aplicacion]/.zfproject.xml'

Crear el modulo default.

La herramienta de linea de comandos zf no crea el modulo default, asi que tendra que ser creado manualmente.
Si ya se ha creado algun modulo obviar la creacion del directorio modules.

cd [directorio de la aplicacion]/application
mkdir modules
mkdir modules/default

Ahora mover los directorios existentes models, controllers, y views de $APP_DIR/application/* a $APP_DIR/application/modules/default/* :

mv controllers modules/default/
mv views modules/default/
mv models modules/default/

Resultado

Una vez que se ha completado estos pasos y para comprobar se abrira un navegador con las sgtes direcciones:
http://%5Baplicacion web]/[modulo] que mostrara la pagina de inicio del modulo
Para el caso del modulo default :
http://%5Baplicacion web]/ y http://%5Baplicacion web]/default/index/index y si todo esta bien se mostrara la misma pagina.

Como funciona :

Crear un modulo.

Cada modulo tiene la misma estructura de directorios que el directorio application, es decir contiene al menos los sgtes directorios :
– controllers
– models.
– views.
Para el caso de usar la linea de comandos, si es el primer modulo que se crea, el comando agregara esta linea al archivo APPLICATION_PATH/application/configs/application.ini

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

Lo que crea este comando es la estructura de directorios del modulo y actualiza el archivo de perfil del proyecto .zfproject.xml.

Crear el modulo default.

Este modulo sera accesible cuando se reciba una peticion que no contenga un nombre de modulo y el subsistema de ruteo tenga que dirigir la peticion hacia el directorio global de la aplicacion : APPLICATION_PATH/application.
El funcionamiento de la aplicacion web con esta estructura no da problemas, pero para efectos de consistencia con la nueva estructura de modulos es una buena practica tener a este directorio explicitamente en el directorio modules.

Actualizar el archivo de configuración de Aplicación.

Se usa para decirle al subsistema de ruteo de Zend Framework como resolver entidades especificas de un modulo.
En esta actualizacion se establecio como frontcontroller al directorio $APP_DIR/application/modules.

Hay mas

El modo en que el subsistema de ruteo analiza las peticiones es el sgte :
As noted earlier, the routing subsystem automatically maps URLs in the format
/module/controller/action to the corresponding module, controller, and action. So, for
example, to access the ListingController::saveAction in the “auto” module,
you’d need to request the URL http://application/auto/listing/save. Similarly, to access the
NewsController::editAction in the “content” module, you’d need to request the URL
http://application/content/news/edit.
If the routing subsystem receives a request that doesn’t conform to the /module/controller/
action format, it automatically applies default settings, as follows:
* For requests without a module name, the routing subsystem automatically assumes the
module to be the “default” module.
* For requests without a controller name, the routing subsystem automatically assumes the
controller to be the IndexController of the selected module.
* For requests without an action name, the routing subsystem automatically assumes the
controller to be the indexAction of the selected controller.
To better understand how these default settings play out in practice, consider the following
examples:
* The ContactController::sendAction in the “default” module can be accessed at
both http://application/default/contact/send and http://application/contact/send.
* The PostController::indexAction in the “default” module can be accessed at both
http://application/default/post/index and http://application/post/.
* The NewsController::indexAction in the “content” module can be accessed at
both http://application/content/news/index and http://application/content/news.

Ver tambien

Zend Framework: A Beginner’s Guide, Vikram Vaswani, Chapter 2: Working with Models, Views, Controllers, and Routes.

Anuncios
Publicado en Zend.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s