1)我有一个控制器“日历”,并有动作“showDate”,通过网址获取日期。所以,url就像“calendar / show-date / date / 2012-07-22”
2)我有一个显示所有条目的链接,“calendar /”
所以,我想创建路线,所以我的链接看起来像“kalendar / 2012-07-22”和“kalendar /".
任何人都可以帮助我吗?
答案 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