Zend Routes翻译URL

时间:2012-06-22 11:05:44

标签: zend-framework zend-route

1)我有一个控制器“日历”,并有动作“showDate”,通过网址获取日期。所以,url就像“calendar / show-date / date / 2012-07-22”

2)我有一个显示所有条目的链接,“calendar /”

所以,我想创建路线,所以我的链接看起来像“kalendar / 2012-07-22”和“kalendar /".

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

根据这篇文章: http://www.z-f.fr/forum/viewtopic.php?id=5138

解决方案是添加'@locale'=> $ lang to the params。

$this->url(array('lang'=>'it','@locale'=>'it'))

对我来说非常好。

答案 1 :(得分:1)

我一直在考虑使用Zend_Translate翻译网址,而且我遇到了这些网站'试图自动翻译URL段(模块/控制器/操作)的插件。

http://blog.helmich.cz/305-howto-simple-multilingual-routes-in-zend-framework/

好消息是它是一个经过修改的自定义路由器类,其功能类似于Zend_Router,所以它相对来说比较熟悉。

$pages = new MyApp_Controller_Router_Route(
    ':locale/:@controller/:@action/*',
    array(
        'controller' =>; 'index',
                'action'     => 'index',
                'locale'     => 'cs'
            )
);

$router->addRoute('pages',$pages);

您需要的是在您的URL中使用语言ID(在上例中称为:locale),以便您的Zend_Translate可以设置正确的语言。

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/

我只是略微使用这个概念,但我记得它有希望。您必须更熟悉Zend_Translate:http://framework.zend.com/manual/en/zend.translate.html

我希望有所帮助!

干杯!

答案 2 :(得分:0)

您可以将日历的所有来电重新路由到 kalendar 。有两种可能性,要么使用Zend(最好),要么更改Web服务器配置以使用HTTP 302(丑陋)重写对 calendar 的调用。

但是你应该咨询官方Zend Documentation,这是非常好的

答案 3 :(得分:0)

你必须设置自定义路线,这是我的方式:

在文件夹application / configs / create file中命名为" routes.ini"

提交您的路线:

;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 =

所以在你的bootstrap.php中定义那个配置文件:

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');
}

就是这样,你可以调用URL

www.website.com/kalendar

www.website.com/kalendar/2012-1-1

有关详细信息,请参阅此问题中的答案: Simple rewrites in Zend Framework