Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] Zend 3, modulos con controllers de igual nombre

Estas en el tema de Zend 3, modulos con controllers de igual nombre en el foro de Zend en Foros del Web. Hola! Consulta: Si tengo 2 modulos, y ambos tienen controllers de igual nombre, supongamos el default "IndexController", ¿cómo diferencio en la url a que controller ...
  #1 (permalink)  
Antiguo 06/04/2018, 11:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 280
Antigüedad: 9 años, 8 meses
Puntos: 2
Zend 3, modulos con controllers de igual nombre

Hola!
Consulta:
Si tengo 2 modulos, y ambos tienen controllers de igual nombre, supongamos el default "IndexController", ¿cómo diferencio en la url a que controller estoy queriendo acceder?
ya que ambas configuraciones de route, podrían ser iguales:

localhost/miaplicacion/public/index/listar (en modulo clientes )

localhost/miaplicacion/public/index/listar (en modulo empleados )


Con esto trato de anticiparme a conflictos, si estoy tratando de armar modulos independientes y que no creen conflictos entre sí, o con librerias de terceros .
  #2 (permalink)  
Antiguo 06/04/2018, 12:20
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.796
Antigüedad: 8 años, 10 meses
Puntos: 213
Respuesta: Zend 3, modulos con controllers de igual nombre

Saludo

Pues para eso una de dos:

O se asignan rutas distintas apuntando al mismo controller
pero a diferentes métodos, o se deja el mismo controller,
con el mismo método, pero enviando un parámetro que indique
cual módulo es el que tiene que entrar a trabajar.

Ej:

localhost/miaplicacion/public/index/listar/clientes
localhost/miaplicacion/public/index/listar/empleados

Y claro, la función listar lo primero que debería hacer
es revisar el valor del módulo para saber si es clientes, empleados, u otro.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 06/04/2018, 12:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 280
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Zend 3, modulos con controllers de igual nombre

Gracias mortiprogramador.

es buena la alternativa que propones.

No entiendo porque han quitado en Zend3 lo que en Zend1 era /modulo/controller/action, creo que era mucho más prolijo y no habría esta puerta abierta a este tipo de inconvenientes.
  #4 (permalink)  
Antiguo 06/04/2018, 15:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.796
Antigüedad: 8 años, 10 meses
Puntos: 213
Respuesta: Zend 3, modulos con controllers de igual nombre

De nada maue75

Pero no creo que la hayan quitado, es decir, por ejemplo,
¿cómo tienes el module.config.php?

Allí debería estar la configuración para que use determinada acción,
y pues debe hacer match con alguno de los métodos del controlador


__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 07/04/2018, 06:58
 
Fecha de Ingreso: noviembre-2008
Mensajes: 280
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Zend 3, modulos con controllers de igual nombre

como me has dicho, mortiprogramador, he dado vueltas sobre la configuración del module.config y he podido hacerlo funcionar.

Siguiendo con el ejemplo,
modulos "empleados" y "clientes",
ambos con su propio "IndexController"
y sus propios métodos "listar",

Código PHP:
        'routes' => [
            
'ClientesListar' => [
                
'type'    => Segment::class,
                
'options' => [
                    
'route'    => '/clientes/index[/:action]',
                    
'defaults' => [
                        
'module'    => 'clientes',
                        
'controller' => ControllerIndexController::class,
                        
'action'     => 'listar',
                    ],
                ],
            ],
     ...
    
'view_manager' => [
        
'template_map' => [
            
'clientes/index/listar' => __DIR__ '/../view/clientes/index/listar.phtml',
... 

Última edición por maue75; 07/04/2018 a las 08:35 Razón: solucionado



La zona horaria es GMT -6. Ahora son las 02:05.