怎么不在Kohana 3的路线重复自己?

时间:2010-08-29 13:15:54

标签: kohana

假设我想制作一个能够负担多语​​种网络项目的系统。系统将包含放在Kohana标准目录modules中的模块。假设可以通过lang参数(即somesite.com/en/somepage)完成对特定语言的标准访问。问题是我必须重复自己定义我的模块路由,每个uri前面加(<lang>)。有什么办法可以避免吗?我想过一个单独的语言路由声明(例如在bootstap.php文件中),但我想它不会解决问题。

所有关于Kohana 3.感谢所有人。

更新 我认为Pixel Developer建议的方式是路由规则的某些部分在任何地方重复所需要的。

2 个答案:

答案 0 :(得分:2)

上移一个级别并扩展路线类。

http://github.com/kohana/core/blob/master/classes/kohana/route.php#L69

public static function set($name, $uri, array $regex = NULL)
{
    return parent::set($name, '(<lang>)'.$uri, $regex);
}

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

答案 1 :(得分:2)

如果路线需要lang,为什么不把它放在默认路线中?当然,这是最简单的方法。类似的东西:

Route::set('default', '<lang>(<controller>(/<action>(/<id>)))', array('lang'=> '[a-z]{2}'))
->defaults(array(
    'controller' => 'somepage',
    'action'     => 'index',
    'lang'       => 'en',
));

其中lang是任意2个字母的字母,默认为'en'。