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

Zend_Translate + Zend_Route

Estas en el tema de Zend_Translate + Zend_Route en el foro de Zend en Foros del Web. Hola, Estoy intentando hacer una web multidioma, con un idioma por defecto y varios que se asignan mediante URL, he seguido [URL="http://www.zendcasts.com/introducing-zend_translate/2009/11/"]Screencasts Introducing Zend_Translate [/URL] ...
  #1 (permalink)  
Antiguo 05/04/2011, 16:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Zend_Translate + Zend_Route

Hola,

Estoy intentando hacer una web multidioma, con un idioma por defecto y varios que se asignan mediante URL, he seguido [URL="http://www.zendcasts.com/introducing-zend_translate/2009/11/"]Screencasts Introducing Zend_Translate [/URL] pero a la hora de hacer funcionar todas las url que me gustaria me he encontrado con problemas con Zend_Route, os pongo un ejemplo de URL, lo que quiero conseguir es:


www.misitio.com/idioma/modulo/controller/action/
www.misitio.com/idioma/modulo/controller/ --> action index ...
www.misitio.com/idioma/modulo/ --> Controller default, action index ...
www.misitio.com/idioma/ --> Pagina principal "idioma"

www.misitio.com/ --> Pagina principal idioma por defecto. x ej. "es"
www.misitio.com/modulo/controller/action/ --> Idioma por defecto.
www.misitio.com/modulo/controller/ -->Idioma por defecto, action index
www.misitio.com/modulo/ -->Idioma por defecto, controller default, action index ...


He probado varias configuraciones pero no doy con una que solucione todos los problemas, he probado poniendo y quitando $router->removeDefaultRoutes();

Entendi leyendo algún hilo de este foro que con la entrada más precisa era suficiente, pero no me funciona:

Código PHP:
$router->addRoute(
          
'lang',
          new 
Zend_Controller_Router_Route(
              
':lang/:module/:controller/:action',
              array(
                  
'lang' => 'es',
                  
'module' => 'default',
                  
'controller' => 'index',
                  
'action' => 'index'
              
)
          )
      ); 
A ver si alguien me puede echar una mano, que llevo varios dias pegandome con esto y no doy con una solución.

Gracias de antemano, un saludo.
  #2 (permalink)  
Antiguo 05/04/2011, 17:49
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Zend_Translate + Zend_Route

Que tal jacintoCorral,

agrégalo con el nombre default, y lo podes hacer en application.ini, algo así:

application.ini
Código INI:
Ver original
  1. resources.router.routes.default.route = ":lang/:module/:controller/:action"
  2. resources.router.routes.default.reqs.lang= "^(es|en|de)$"
  3. resources.router.routes.default.defaults.lang = "es"
  4. resources.router.routes.default.defaults.module = "default"
  5. resources.router.routes.default.defaults.controller = "index"
  6. resources.router.routes.default.defaults.action = "index"

le agregue el reqs(required), para controlar los idiomas permitidos.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 05/04/2011 a las 18:30 Razón: typo
  #3 (permalink)  
Antiguo 06/04/2011, 13:17
 
Fecha de Ingreso: febrero-2011
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Zend_Translate + Zend_Route

Masterpuppet lo primero gracias por la respuesta, es casi la solucion, el problema es que ahora funciona para URLs con lang, pero no sin el.

Funciona --> /lang/module/controller/action/ -- /lang/module/controller/ -- /lang/module/
No Funciona --> /module/controller/action/ --

Alguna idea para que si no se le pasa "lang" coja el de por defecto?

He intentado meter una segunda conf menos generica, pero me dejan de funcionar alguna de las url con idiomas...

Código PHP:
Ver original
  1. resources.router.routes.default2.route = ":module/:controller/:action"
  2. resources.router.routes.default2.defaults.lang = "es"
  3. resources.router.routes.default2.defaults.module = "default"
  4. resources.router.routes.default2.defaults.controller = "index"
  5. resources.router.routes.default2.defaults.action = "index"

Gracias de antemano.



Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal jacintoCorral,

agrégalo con el nombre default, y lo podes hacer en application.ini, algo así:

application.ini
Código INI:
Ver original
  1. resources.router.routes.default.route = ":lang/:module/:controller/:action"
  2. resources.router.routes.default.reqs.lang= "^(es|en|de)$"
  3. resources.router.routes.default.defaults.lang = "es"
  4. resources.router.routes.default.defaults.module = "default"
  5. resources.router.routes.default.defaults.controller = "index"
  6. resources.router.routes.default.defaults.action = "index"

le agregue el reqs(required), para controlar los idiomas permitidos.

Saludos.

Última edición por jacintoCorral; 06/04/2011 a las 13:25 Razón: Añadida prueba...
  #4 (permalink)  
Antiguo 08/04/2011, 03:22
 
Fecha de Ingreso: febrero-2011
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Zend_Translate + Zend_Route

A ver esta es mi configuración, para el Zend_Route:

Código PHP:
resources.router.routes.default.route ":lang/:module/:controller/:action"
resources.router.routes.default.reqs.lang"^(es|en)$"
resources.router.routes.default.defaults.lang "es"
resources.router.routes.default.defaults.module "default"
resources.router.routes.default.defaults.controller "index"
resources.router.routes.default.defaults.action "index"

resources.router.routes.default2.route ":module/:controller/:action"
resources.router.routes.default2.defaults.lang "es"
resources.router.routes.default2.defaults.module "default"
resources.router.routes.default2.defaults.controller "index"
resources.router.routes.default2.defaults.action "index" 
Pero algunas combinaciones no me funcionan:

OK - www.misitio.com/lang/module/controller/action/
KO - www.misitio.com/lang/module/controller/
KO - www.misitio.com/lang/module/
KO - www.misitio.com/lang/

OK - www.misitio.com/module/controller/action/
OK - www.misitio.com/module/controller/
OK - www.misitio.com/module/
OK - www.misitio.com/

Como hacer para que todos estos tipos de URL me funcionen?

Gracias.

Etiquetas: frameworks-y-php-orientado-a-objetos, route, zend_route, zend_translate, zend-framework, translator
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 08:05.