La estructura básica de una URL en ZF2 es:
http://app/módulo/controlador/acción/parámetros
Recordemos que el uso de módulos nos permite segmentar el código, haciendo que sea más fácil de mantener y distribuir.
En la estructura de un módulo encontraremos tres carpetas imprescindibles:
- config: donde se ubicarán los ficheros de configuración del módulo.
- src: aquí encontraremos los controladores del módulo.
- view: las vistas y layouts que nos determinaran la salida HTML.
La creación de un módulo es tan sencilla como la creación de una aplicación, descargaremos el esqueleto base de un módulo desde el repositorio git de Zend Framework, como ejemplo crearemos un módulo llamado Menus:
cd /path_project/module git clone git://github.com/zendframework/ZendSkeletonModule.git Menus
Este paso nos permitirá crear toda la estructura de directorios básica. Por defecto el esqueleto básico nos trae un controlador llamado ZendSkeletonModule con sus vistas asociadas. Para poder hacer accesible el nuevo módulo creado debemos incluirlo en el fichero /config/application.config.php de nuestra aplicación:
<?php return array( // This should be an array of module namespaces used in the application. 'modules' => array( 'Application', 'Menus', ), // These are various options for the listeners attached to the ModuleManager 'module_listener_options' => array( 'module_paths' => array( './module', './vendor','./module', ), 'config_glob_paths' => array( 'config/autoload/{,*.}{global,local}.php', ), ), );En el módulo descargado desde git hemos de realizar algunas correcciones para adaptarlo al nombre que le hemos dado.
Fichero /module/Menus/Module.php:
... namespace Menus; ..
Fichero /module/Menus/config/module.config.php sustituir cada ocurrencia de "ZendSkeletonModule" por "Menus" al igual que "module-specific-root" por "menus". Así mismo redefiniremos el controlador por "Index" en lugar de "SkeletonController":
<?php return array( 'controllers' => array( 'invokables' => array( 'Menus\Controller\Index' => 'Menus\Controller\Index', ), ), 'router' => array( 'routes' => array( 'module-name-here' => array( 'type' => 'Literal', 'options' => array( // Change this to something specific to your module 'route' => '/menus', 'defaults' => array( // Change this value to reflect the namespace in which // the controllers for your module are found '__NAMESPACE__' => 'Menus\Controller', 'controller' => 'Index', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( // This route is a sane default when developing a module; // as you solidify the routes for your module, however, // you may want to remove it and replace it with more // specific routes. 'default' => array( 'type' => 'Segment', 'options' => array( 'route' => '/[:controller[/:action]]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array( ), ), ), ), ), ), ), 'view_manager' => array( 'template_path_stack' => array( 'Menus' => __DIR__ . '/../view', ), ), );Renombraremos la carpeta /module/Menus/src/ZendSkeletonModule por /module/Menus/src/Menus.
Renombraremos la carpeta /module/Menus/view/zend-skeleton-module por /module/Menus/view/menus.
Renombraremos la carpeta /module/Menus/view/menus/skeleton por /module/Menus/view/menus/index.
Finalmente renombraremos el fichero /module/Menus/src/Menus/Controller/SkeletonController.php por /module/Menus/src/Menus/Controller/Index.php
Una vez hecho podemos invocar cualquiera de las acciones por defecto que han sido creadas en nuestro módulo:
http://localhost/myApp/menus
http://localhost/myApp/menus/index/foo
Ya hemos creado nuestro primer módulo en Zf2, el siguiente paso es dotarlo de funcionalidad.
No hay comentarios:
Publicar un comentario