我正在阅读有关路由的CakePHP文档,但是我还无法掌握它。语言和路由
我想实现的是:
- 应该有和没有在控制器参数的前一个语言参数工作。
- 当没有给出动作时,它应该转到前端动作(该函数也有输入变量)。
编辑
最后,我做我的应用程序逻辑,如果有定义的只有1种语言,不会有lanugage前缀,如果有更多的语言,链接将被生成语言前缀(通过覆盖html助手)和路由将是不同的。否则,当我试图定义单一语言版本的路由(没有前缀)时总会有问题。这里是我的代码,现在的工作:
(应用程序/配置/ routes.php文件)
/*
* ===================== Input start ===================== *
*/
/**
* Default language
*/
Configure :: write('Config.language', 'mkd');
/**
* Application languages
*/
Configure :: write('Config.languages', array(
'mkd' => 'Македонски',
'eng' => 'English',
));
/**
* ====================== Input end ====================== *
*/
/**
* Counting languages...
*/
Configure :: write('Config.languageCount', count(Configure :: read('Config.languages')));
/**
* If application is multilingual
*/
if(Configure :: read('Config.languageCount') > 1) {
Router::connect('/:language/:controller/:action/*',
array(),
array('language' => implode('|', array_keys(Configure :: read('Config.languages'))))
);
Router::connect('/:language/:controller/*',
array('action' => 'frontend'),
array('language' => implode('|', array_keys(Configure :: read('Config.languages'))))
);
}
/**
* If application has one language
*/
else {
Router::connect('/:controller/*', array('action' => 'frontend'));
}
感谢您的帮助戴夫和kicaj,你的帮助简化我的这种方法。
阅读:http://bakery.cakephp.org/articles/kicaj/2013/01/27/internationalization_with_static_and_dynamic_content_routing_and_switching – kicaj
我找不到任何有关语言插件路由的问题 –