1)我有一个控制器“日历”,并有一个动作“showDate”,它通过url获取日期。所以,网址类似于“日历/显示日期/日期/2012-07-22”
2)我有一个显示所有条目的链接,“日历/”
所以,我想创建路线,使我的链接看起来像“kalendar/2012-07-22”和“kalendar/”。
谁能帮我?
1)我有一个控制器“日历”,并有一个动作“showDate”,它通过url获取日期。所以,网址类似于“日历/显示日期/日期/2012-07-22”
2)我有一个显示所有条目的链接,“日历/”
所以,我想创建路线,使我的链接看起来像“kalendar/2012-07-22”和“kalendar/”。
谁能帮我?
根据这篇文章: http ://www.zf.fr/forum/viewtopic.php?id=5138
解决方案是将 '@locale' => $lang 添加到参数中。
$this->url(array('lang'=>'it','@locale'=>'it'))
它对我来说效果很好。
我一直在研究用 Zend_Translate 翻译 URL,我遇到了这个网站的插件,它试图自动翻译 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
我希望这会有所帮助!
干杯!
您可以将calendar的所有调用重新路由到kalendar。有两种可能性,要么使用 Zend(首选),要么更改 Web 服务器配置以使用 HTTP 302重写对日历的调用(丑陋)。
但是,您应该查阅Zend官方文档,这非常好
您必须设置自定义路线,这是我的方式:
在文件夹 application/configs/ 创建名为“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
有关详细信息,请参阅此问题中的答案: Zend Framework 中的简单重写