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

[SOLUCIONADO] Como crear un Zend_Controller_Router_Route

Estas en el tema de Como crear un Zend_Controller_Router_Route en el foro de Zend en Foros del Web. Hola, como estan? estoy tratando de crear un router en zend framework pero no me funciona como quiero... a ver si me pueden ayudar... les ...
  #1 (permalink)  
Antiguo 31/07/2013, 18:10
 
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Como crear un Zend_Controller_Router_Route

Hola, como estan? estoy tratando de crear un router en zend framework pero no me funciona como quiero... a ver si me pueden ayudar... les explico..

al inicio en el bootstrap e configurado el Zend_Controller_Router_Route y funciona a la perfeccion pero tengo un problema con los link de esa pagina...

quiero crear una url al estilo del perfil de facebook, por ejemplo: "midominio.com/nombre-usuario" estoy usando este codigo y funciona...

$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('minombre',
new Zend_Controller_Router_Route('minombre', array(
'controller' => 'user',
'action' => 'perfil',
'ver' => 'minombre'
))
);

el problema es que si tengo este metodo y 1000 usuarios se tarda un poco creando todas los router y me crea los link de esa pagina de esta manera "www.midominio.com/minombre/controller/action/variable" y claro eso no existe...! por q usa como controller "minombre", cosa q no quiero!

lo q penc es validar si no existe el controller busco la variable en la tabla de usuario , pero no se como hacerlo...

q metodo me recomiendan?
gracias...
  #2 (permalink)  
Antiguo 31/07/2013, 22:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como crear un Zend_Controller_Router_Route

Si bien crear una ruta de tan alto nivel no es recomendado puedes hacerlo así:
Código PHP:
Ver original
  1. $route = new Zend_Controller_Router_Route(
  2.     'perfiles/:perfil',
  3.     array(
  4.         'controller' => 'perfiles',
  5.         'module' => 'default',
  6.         'action' => 'verperfil',
  7.         'perfil' => 'none'
  8.     )
  9. );
  10. $router->addRoute('perfiles', $route);

y ya rescatas usando $this->_getParam('perfil'); así no tienes que crear uno por cada perfil, simplemente con que llames a perfiles/fulano o perfiles/sutano funciona.

Saludos
  #3 (permalink)  
Antiguo 01/08/2013, 12:01
 
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Como crear un Zend_Controller_Router_Route

ok! gracias... voy a probar y les comento!
  #4 (permalink)  
Antiguo 01/08/2013, 13:31
 
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Como crear un Zend_Controller_Router_Route

Gracias de nuevo GatorV, funciona bien el codigo... pero tengo un problema todos los link dentro de esa pagina me toman mal los controller...

para crear los link uso el siguiente codigo:

$this->url(array('controller' => 'micontroller', 'action' => 'miaction' ),$name = null, $reset = true, $encode = true);

y la URL seria: http://midominio.com/micontroller/miaction

el problema es que toma el dominio del router modificado los link me quedan:
http://midominio.com/perfiles

una solución rapida es colocar el link manual...

...pero existe una forma de q pueda crear los link como son sin necesidad de esto...?
  #5 (permalink)  
Antiguo 01/08/2013, 13:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como crear un Zend_Controller_Router_Route

El segundo parámetro es la ruta, usa 'default' para usar la ruta por defecto para armar la URL.
  #6 (permalink)  
Antiguo 01/08/2013, 14:14
 
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Como crear un Zend_Controller_Router_Route

cool...! un millon GatorV, muchas gracias... funciona perfecto...

Etiquetas: Ninguno
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 13:27.