我在kohana 3.2中遇到了一个小问题。我想创建一个支持多种语言的简单博客。
我想创建这样的链接:
我为接触和路由设置了一个简单的控制器,但是当涉及到路由时,我必须设置静态路由,这是一个非常糟糕的解决方案。例如:
for pl lang:
Route::set('kontakt', 'kontakt(/<action>(/<id>(/<id2>(/<id3>))))')
->defaults(array(
'controller' => 'contact',
'action' => 'index',
));
当我使用domain.com/contact
和domain.com/kontakt
时它会起作用,但是当我有20多个控制器和3个langugage时;这将是60多条路线==糟糕的解决方案。
我感谢任何帮助。
答案 0 :(得分:1)
您至少可以将单个页面的翻译组合在一起,但为此您仍然需要每页至少有一个路径。
此示例使用正则表达式匹配网址的<page_name>
部分:
Route::set('kontakt', '<page_name>(/<action>(/<id>(/<id2>(/<id3>))))',
array('page_name' => '(contact|kontakt|contatto)'))
->defaults(array(
'controller' => 'contact',
'action' => 'index',
));
还要考虑在设置Route
时可以指定回调函数,如果找到匹配的路由,则可以返回应该调用的控制器和操作。这允许您运行自己的代码并确定要调用的控制器/操作。请参阅手册中的Lambda/Callback route logic部分。