如何不在Kohana 3'中重复我自己;什么路线?

如何不在Kohana 3'中重复我自己;什么路线?,kohana,Kohana,比方说,我想做一个系统,可以负担得起一个多语言的网络项目。该系统将由放在科哈纳标准目录modules中的模块组成。假设可以通过lang参数(即somesite.com/en/somepage)对特定语言进行标准访问。问题是,我必须重复定义模块路由,在每个uri前面加上()。有什么办法可以避免吗?我曾考虑过一个单独的语言路由声明(例如在bootstap.php文件中),但我想它不会解决问题 都是关于科哈纳3号的。谢谢大家 更新: 我认为Pixel Developer建议的方法是,如果route中的

比方说,我想做一个系统,可以负担得起一个多语言的网络项目。该系统将由放在科哈纳标准目录
modules
中的模块组成。假设可以通过
lang
参数(即somesite.com/en/somepage)对特定语言进行标准访问。问题是,我必须重复定义模块路由,在每个uri前面加上
()
。有什么办法可以避免吗?我曾考虑过一个单独的语言路由声明(例如在bootstap.php文件中),但我想它不会解决问题

都是关于科哈纳3号的。谢谢大家

更新:
我认为Pixel Developer建议的方法是,如果route中的某些规则在任何地方重复,我们需要的方法。

向上移动一个级别并扩展route类

公共静态函数集($name,$uri,数组$regex=NULL)
{
返回父::set($name,“()”.$uri,$regex);
}

未测试,但这是一般的想法。

如果路由中需要使用
lang
,为什么不将其放在默认路由中?当然这是最简单的方法。比如:

Route::set('default', '<lang>(<controller>(/<action>(/<id>)))', array('lang'=> '[a-z]{2}'))
->defaults(array(
    'controller' => 'somepage',
    'action'     => 'index',
    'lang'       => 'en',
));
Route::set('default','(/(/))',array('lang'=>'[a-z]{2}'))
->默认值(数组)(
'controller'=>'somepage',
“操作”=>“索引”,
“lang”=>“en”,
));

其中lang是默认为“en”的任意两个字母。

hm。这是一个有趣的想法。为什么我没有想到这一点。我稍后会尝试并更新问题。没问题。如果答案正确,别忘了接受。如果你的接受率很高,人们将来会更愿意帮助你。当然,我一定会在试过之后马上去做!也许我不太了解路由系统,但在这种情况下,我必须输入下一条我将定义的路由,不是吗?现在我无法验证我已经得到的所有方法,但我猜像素开发人员是正确的。。。在接下来的几个小时里,我会尝试。是的,你需要在每一条路线上使用它。请参阅本页,以了解更优雅地操作的示例:
Route::set('default', '<lang>(<controller>(/<action>(/<id>)))', array('lang'=> '[a-z]{2}'))
->defaults(array(
    'controller' => 'somepage',
    'action'     => 'index',
    'lang'       => 'en',
));