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

Funcionamiento Zend_Route

Estas en el tema de Funcionamiento Zend_Route en el foro de Zend en Foros del Web. Buenas, Os cuento el caso que tengo. Tengo dos listados de cruceros, llamemoslos tipoA y tipoB. [url]www.dominio.com/crucerosA/list[/url] [url]www.dominio.com/crucerosB/list[/url] se corresponderían con el controlador de crucerosA ...
  #1 (permalink)  
Antiguo 08/06/2010, 04:54
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Funcionamiento Zend_Route

Buenas,

Os cuento el caso que tengo.

Tengo dos listados de cruceros, llamemoslos tipoA y tipoB.

[url]www.dominio.com/crucerosA/list[/url]
[url]www.dominio.com/crucerosB/list[/url]

se corresponderían con el controlador de crucerosA y action list y lo mismo para el B.

El caso es que crucerosA y crucerosB son exactamente iguales solo cambia una variable que indica que tipo de crucero es.

Quiero hacer un controlador cruceros de forma que cuando llame al crucerosA redireccione a cruceros/type/A y cuando llame al crucerosB redireccione a cruceros/type/B

pero no lo consigo

He intentando varias opciones creando rutas en el bootstrap pero nada, la que tengo ahora es asi:

Código:
       $fc=Zend_Controller_Front::getInstance();
        $fc->registerPlugin(new Plugin_AccessCheck($auth));
        
        $router=$fc->getRouter();
 $router->addRoute(
        		'cruiseAroute',
        		new Zend_Controller_Router_Route("/home/crucerosA/*",
        					array('module'=>'home','controller'=>"cruceros","type"=>"A"))
        		);      
 $router->addRoute(
        		'cruiseBroute',
        		new Zend_Controller_Router_Route("/home/crucerosB/*",
        					array('module'=>'home','controller'=>"cruceros","type"=>"B"))
        		);
  #2 (permalink)  
Antiguo 08/06/2010, 08:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Funcionamiento Zend_Route

El primer parámetro a Zend_Controller_Router_Route es la ruta, en tu caso si lo que quieres es que sea /crucerosA/list tienes que hacerlo así:
Código PHP:
Ver original
  1. $fc=Zend_Controller_Front::getInstance();
  2.         $fc->registerPlugin(new Plugin_AccessCheck($auth));
  3.        
  4.         $router=$fc->getRouter();
  5.  $router->addRoute(
  6.                 'cruiseAroute',
  7.                 new Zend_Controller_Router_Route_Static("/crucerosA/list",
  8.                             array('module'=>'home','controller'=>"cruceros","type"=>"A", "action" => "list"))
  9.                 );      
  10.  $router->addRoute(
  11.                 'cruiseBroute',
  12.                 new Zend_Controller_Router_Route_Static("/crucerosB/list",
  13.                             array('module'=>'home','controller'=>"cruceros","type"=>"B", "action" => "list"))
  14.                 );

Saludos.
  #3 (permalink)  
Antiguo 08/06/2010, 16:30
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Funcionamiento Zend_Route

Si, Gator, pero lo que quiero es redireccionar "cualquier accion" que vaya al controlador crucerosA o bien al crucerosB, todo que se gestione mediante el controlador cruceros
  #4 (permalink)  
Antiguo 09/06/2010, 10:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Funcionamiento Zend_Route

Ah pues entonces lo puedes hacer así:
Código PHP:
Ver original
  1. $fc=Zend_Controller_Front::getInstance();
  2.         $fc->registerPlugin(new Plugin_AccessCheck($auth));
  3.        
  4.         $router=$fc->getRouter();
  5.         $router->addRoute(
  6.             'cruiseAroute',
  7.             new Zend_Controller_Router_Route(
  8.                 '/crucerosA/:action/*',
  9.                 array(
  10.                     'module'     => 'home',
  11.                     'controller' => 'cruceros',
  12.                     'type'       => 'A',
  13.                     'action'     => 'index'
  14.                 )
  15.             )
  16.         );
  17.         $router->addRoute(
  18.             'cruiseBroute',
  19.             new Zend_Controller_Router_Route(
  20.                 '/crucerosB/:action/*',
  21.                 array(
  22.                     'module'     => 'home',
  23.                     'controller' => 'cruceros',
  24.                     'type'       => 'B',
  25.                     'action'     => 'index'
  26.                 )
  27.             )
  28.         );

Al específicar :action va a cachar todas las acciones y enviarlas al controller cruceros, y al dejar un "default" en los parámetros te permite que tu ruta trabaje con /crucerosA o /crucerosB y que estos se vayan al index.

Saludos.
  #5 (permalink)  
Antiguo 10/06/2010, 10:41
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Funcionamiento Zend_Route

Hola Gator, y si no quiero que se vaya al index?

es decir, si quiero que el /crucerosA/list/ se vaya al /cruceros/list/type/A pero el /crucerosA/ficha/num/2/ se vaya al /cruceros/ficha/type/A/num/2 ¿?

Hay forma de hacerlo ?

He probado con

Código:
$router->addRoute(
        		'cruisesAroute',
        		new Zend_Controller_Router_Route("/home/crucerosA/:action/*",
        					array('module'=>'home',
        						'controller'=>"cruceros",
        						"type"=>"A",
        						"action"=>":action")
        					)
        		);
pero logicamente no funciona.
  #6 (permalink)  
Antiguo 10/06/2010, 10:54
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Funcionamiento Zend_Route

HE quitado el

"action"=>":action"

y funciona excepto cuando la action es "index". No entiendo nada.
  #7 (permalink)  
Antiguo 10/06/2010, 17:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Funcionamiento Zend_Route

Se van al index si no envias al parámetro, tienes que dejar el parámetro en la ruta y dejar en action un valor por defecto si quieres que la ruta funcione con /crucerosA o /crucerosB, si no vas a tener que especificar forzosamente /crucerosA/list o /crucerosA/algo

Saludos.
  #8 (permalink)  
Antiguo 10/06/2010, 17:19
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Funcionamiento Zend_Route

Vale, creo que ya lo entendí.

Muchas gracias.

Etiquetas: funcionamiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:25.