zend-framework - zend framework routing
Zend Routes traduce las URL (4)
1) Tengo un "calendario" de controlador y tengo la acción "showDate", que obtiene la fecha a través de la url. Por lo tanto, url es algo así como "calendario / show-date / date / 2012-07-22"
2) Tengo un enlace para mostrar todas las entradas, "calendario /"
Entonces, quiero crear rutas para que mis enlaces se vean como "kalendar / 2012-07-22" y "kalendar /".
¿Alguien puede ayudarme?
De acuerdo con esta publicación: http://www.zf.fr/forum/viewtopic.php?id=5138
La solución es agregar ''@locale'' => $ lang a los params.
$this->url(array(''lang''=>''it'',''@locale''=>''it''))
Funciona muy bien para mí.
Estuve investigando la traducción de la URL con Zend_Translate y me encontré con el complemento de estos sitios que intenta traducir automáticamente segmentos de URL (módulo / controlador / acción).
http://blog.helmich.cz/305-howto-simple-multilingual-routes-in-zend-framework/
Lo bueno es que es una clase de enrutador personalizado modificado que puede funcionar de manera similar a Zend_Router, por lo que es relativamente familiar desde el principio.
$pages = new MyApp_Controller_Router_Route(
'':locale/:@controller/:@action/*'',
array(
''controller'' =>; ''index'',
''action'' => ''index'',
''locale'' => ''cs''
)
);
$router->addRoute(''pages'',$pages);
Lo que necesitará es tener una ID de idioma en su URL (llamada: configuración regional en el ejemplo anterior) para que Zend_Translate pueda establecer el idioma adecuado.
www.example.com/en/calendar/2012-06-22/
www.example.com/fr/calendrier/2012-06-22/
www.example.com/de/kalender/2012-06-22/
www.example.com/it/calendario/2012-06-22/
Solo jugué un poco con este concepto, pero recuerdo que fue prometedor. Tendrá que familiarizarse con Zend_Translate: http://framework.zend.com/manual/en/zend.translate.html
¡Espero que eso ayude!
¡Aclamaciones!
Podría redirigir todas las llamadas del calendario a kalendar . Hay dos posibilidades, ya sea que lo haga con Zend (preferible) o cambie la configuración de su servidor web para reescribir las llamadas al calendario con un HTTP 302 (feo).
Sin embargo, debe consultar la documentación oficial de Zend , que es bastante buena.
Tienes que configurar rutas personalizadas, esta es mi manera:
en la carpeta application / configs / create file llamado "routes.ini"
Ponga en archivo su ruta:
;index-homepage, parameter date isn''t required
;"index" is key of your route
routes.index.route = "kalendar/:date"
routes.index.defaults.controller = calendar
routes.index.defaults.action = show
routes.index.defaults.date =
Entonces en tu bootstrap.php define ese archivo de configuración:
protected function _initRoute() {
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addDefaultRoutes();
$config = new Zend_Config_Ini(APPLICATION_PATH . ''/configs/routes.ini'');
$router->addConfig($config, ''routes'');
}
Y eso es todo, puedes llamar a la URL
www.website.com/kalendar
y
www.website.com/kalendar/2012-1-1
Vea las respuestas en esta pregunta para más detalles: reescrituras simples en Zend Framework