zend framework zend-framework zend-route

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