假设我想制作一个能够负担多语种网络项目的系统。系统将包含放在Kohana标准目录modules
中的模块。假设可以通过lang
参数(即somesite.com/en/somepage)完成对特定语言的标准访问。问题是我必须重复自己定义我的模块路由,每个uri前面加(<lang>)
。有什么办法可以避免吗?我想过一个单独的语言路由声明(例如在bootstap.php文件中),但我想它不会解决问题。
所有关于Kohana 3.感谢所有人。
更新 我认为Pixel Developer建议的方式是路由规则的某些部分在任何地方重复所需要的。
答案 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'。