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

Unificar urls con Zend Route

Estas en el tema de Unificar urls con Zend Route en el foro de Zend en Foros del Web. Hola! Para que se entienda mi duda pongo un ejemplo. Tengo una url que muestra un listado de productos. Dichos productos estan paginados y se ...
  #1 (permalink)  
Antiguo 15/02/2012, 08:22
 
Fecha de Ingreso: marzo-2006
Mensajes: 47
Antigüedad: 18 años, 7 meses
Puntos: 0
Unificar urls con Zend Route

Hola!
Para que se entienda mi duda pongo un ejemplo.
Tengo una url que muestra un listado de productos. Dichos productos estan paginados y se pueden ordenar por nombre y por precio.
Para hacer mas agradable a la vista le modifico la url asi:
Código PHP:
$router->addRoute(
            
'catalogo', new Zend_Controller_Router_Route_Regex('catalogo/(.+)',
                array(
'module'=> 'default''controller' => 'productos''action' => 'catalogo'),
                array(
'1' => 'nombre')
             )
        ); 
Esto funciona bien. El "problema" pasa cuando quiero incorporar las variables de paginacion o de orden. Solamente pude hacerlo agregando una nueva ruta asi:
Código PHP:
$router->addRoute(
            
'catalogoPaginado', new Zend_Controller_Router_Route_Regex('catalogo/(.+)/(\d+)',
                array(
'module'=> 'default''controller' => 'productos''action' => 'catalogo'),
                array(
'1' => 'nombre''2' => 'pag')
             )
        ); 
Si uso solamente esta ultima ruta cuando entro a www.misitio.com/catalogo me lanza un error.

Mi pregunta es si se puede crear una sola ruta que maneje las distintas opciones o necesariamente tengo que crear tantas rutas como opciones necesite (pagina sin ordenar, pagina y ordenado, ordenado pero sin pagina, etc)

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 15/02/2012, 09:43
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: Unificar urls con Zend Route

Claro, puedes hacer algo tan sencillo como:
Código PHP:
Ver original
  1. $router->addRoute(
  2.             'catalogo', new Zend_Controller_Router_Route('catalogo/:nombre/:pagina/:orden',
  3.                 array('module'=> 'default', 'controller' => 'productos', 'action' => 'catalogo'),
  4.                 array('nombre' => 'nombre', 'pag' => '1', 'orden' => 'nombre')
  5.              )
  6.         );

Con eso se crea una ruta, cuyos defectos son nombre => nombre, pag => 1, orden => nombre, así puedes entrar directo a /catalogo, o a /catalogo/nombre o a /catalogo/nombre/2 o a /catalogo/nombre/2/otroorden.

Saludos.
  #3 (permalink)  
Antiguo 15/02/2012, 14:54
 
Fecha de Ingreso: marzo-2006
Mensajes: 47
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Unificar urls con Zend Route

Gracias GatorV pero por alguna razon no me funciona. Utilizando ese código siempre me arroja un error 404.
Por una cuestiones de prueba hice el controller muy simple:
Código PHP:
class ProductosController extends Zend_Controller_Action{
    public function 
init(){}
    public function 
catalogoAction(){
        echo 
'test';
        die();
    }

y para simplificar el tema del route lo deje:
Código PHP:
$router->addRoute(
       
'catalogo', new Zend_Controller_Router_Route('catalogo/:nombre',
       array(
'module'=> 'default''controller' => 'productos''action' => 'catalogo'),
       array(
'nombre' => 'defNombre')
       )
); 
y por mas que ponga www.misitio.com/catalogo o www.misitio.com/catalogo/nombre , me dispara un error 404

no encuentro donde esta el problema

Desde ya muchas gracias
  #4 (permalink)  
Antiguo 15/02/2012, 16:29
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: Unificar urls con Zend Route

Perdon sería una ruta así:
Código PHP:
Ver original
  1. $router->addRoute(
  2.             'catalogo',
  3.             new Zend_Controller_Router_Route(
  4.                 'catalogo/:nombre/:pagina/:orden',
  5.                  array('module'=> 'default', 'controller' => 'productos', 'action' => 'catalogo',
  6.                          'nombre' => 'nombre', 'pag' => '1', 'orden' => 'nombre')
  7.                  )
  8.              );

Tienes que pasarle los parámetros por defecto a tu ruta.

Saludos.
  #5 (permalink)  
Antiguo 15/02/2012, 16:56
 
Fecha de Ingreso: marzo-2006
Mensajes: 47
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Unificar urls con Zend Route

Muchas Gracias. Funciona de 10.

Etiquetas: route, url
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 10:18.