Crear módulos en Zend Framework 2

Veamos como crear módulos en Zend Framework 2.

Lo primero es ir al fichero config/application.config.php y añadir el nombre del nuevo modulo.
crear modulos en zend framework 2

En el directorio module se guardan los módulos, por defecto nos viene el modulo Application, en module crearemos una nueva carpeta con el nombre de nuestro modulo.
crear modulos en zend framework 2 modulo

Dentro del directorio del modulo, tenemos que crear tres directorios (config, view y src)
crear modulos en zend framework 2 config src view

Dentro de config tenemos que tener un fichero llamado module.config.php el cual podemos copiar del modulo Application y modificarlo ahora.
Lo configuramos de la siguiente forma:

<?php

return array(
    'controllers'=>array(
        'invokables'=>array(
            'Modulo\Controller\Pruebas'=>'Modulo\Controller\PruebasController'
         ),
     ),
     
     'router'=>array(
        'routes'=>array(
            'modulo'=>array(
                 'type'=>'Segment',
                    'options'=>array(
                        
                        'route' => '/modulo[/[:action]]',
                        'constraints' => array(
                                'action'  =>  '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        
                        'defaults'  =>  array(
                                'controller' => 'Modulo\Controller\Pruebas',
                                'action'     => 'index'
                         
                        ),
                    ),
           ),
       ),
    ),
    
   //Cargamos el view manager
   'view_manager' => array(
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'modulo/index/index' => __DIR__ . '/../view/pruebas/index/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ),
        'template_path_stack' => array(
          'modulo' =>  __DIR__ . '/../view',
        ),
    ), 
 );  

En el directorio src tenemos que crear un directorio con el nombre del módulo y dentro de este un directorio Controller en el que dentro irán nuestros controladores.
En el controlador tenemos que definir el namespace correcto namespace Modulo\Controller;
crear modulos en zend framework 2 controller

En el directorio view tenemos que tener un directorio error y layout que podemos copiar del modulo Application y también tenemos que tener un directorio con el nombre del módulo, dentro de este un directorio con el nombre del controlador donde irán las vistas de sus métodos.

Por ultimo hay que copiar el fichero module.php del módulo application y cambiarle el namespace.
crear modulos en zend framework 2 arbol modulo

Ya podemos acceder al controlador de nuestro módulo desde el navegador.
crear modulos en zend framework 2 viendo controlador

La otra opción para crear un módulo es descargar https://github.com/zendframework/ZendSkeletonModule o copiar el módulo que viene por defecto y modificar los namespaces y configuraciones que trae, esta seria la mejor opción si queremos subir un módulo a la comunidad.

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

4 Comentarios

  1. hola he seguido este tutorial pero al intentarlo implementar en ubuntu no me reconoce el modelo ni la vista pero si lo hago por windows me sale bien que podria para arreglarlo gracias

    Responder
    • Linux es Case Sensitive. Cambia los directorios que es «modulo» en minúsculas por «Modulo». En este tipo de cosas siempre hay que tener cuidado. Un saludo.

      Responder
  2. Siempre se cargara el modulo «Application» a pesar de agregar modulos? es por defecto? como puedo hacer que otro modulo sea el que se muestre por defecto

    Responder
    • El módulo «Application» es el que viene por defecto, lo puedes quitar, le puedes cambiar el nombre o hacer lo que quieras con el. Se muestra por defecto porque tiene las rutas configuradas para el, puedes modificar las rutas para que se cargue otro controlador de otro módulo sin problema.

      Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *