Codeigniter HMVC模块化分离扩展URL重写/路由

时间:2010-07-31 23:25:57

标签: codeigniter hmvc

我一直在使用HVMC模块化扩展,它运行良好,但我无法弄清楚如何使用,以及是否可以使用与HVMC的URL路由。

基本上,我有一个名为“site”的模块,这是我的主要默认站点控制器。所有其他模块我没有直接使用,我只是通过调用echo modules :: run('controller / method')来使用它们; - 所以基本上我只是想从URL中删除“site”以便所有方法在站点模块/控制器中显示,其中没有“站点”一词。

有人能告诉我是否可以使用HVMC模块化扩展吗?

任何帮助非常感谢!

2 个答案:

答案 0 :(得分:1)

为了完整性,我一直在研究我自己的解决方案,并且可以通过在routes.php配置文件中添加以下内容来删除URI字符串上的“site”前缀。

$route['(:any)'] = "site/$1";
$route['default_controller'] = "site";

答案 1 :(得分:0)

我在CI HMVC工作了3年,我的一些路由示例就在那里,它可能对你有帮助。

我定义了两种类型的模块,其中一种是网站,另一种是管理员。

1>管理员路由:

/*ADMIN is a constant, you can define anything like admin or backend etc. */
/*Example: admin/login*/
$route[ADMIN.'/([a-zA-Z]+)'] = function($controller){ 
    return 'admin/'.strtolower($controller);
};

/*Example: admin/user/listing*/
$route[ADMIN.'/([a-zA-Z]+)/(:any)'] = function($controller, $function){ 
    return 'admin/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function));
};

/*Example: admin/user/edit/LU1010201352*/
$route[ADMIN.'/([a-zA-Z]+)/(:any)/(:any)'] = function($controller,$function,$param) { 
    return 'admin/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function)).'/'.$param;
};

/*Example: admin/user/assign-group/LU1010201352/G2010201311*/
$route[ADMIN.'/([a-zA-Z]+)/(:any)/(:any)/(:any)'] = function($controller,$function,$param,$param1){ 
    return 'admin/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function)).'/'.$param.'/'.$param1;
};

2>网站路由:

$route['([a-zA-Z]+)'] = function($controller) {
    return 'site/'.strtolower($controller);
};  

$route['([a-zA-Z]+)/(:any)'] = function($controller,$function){
    return 'site/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function));
};

$route['([a-zA-Z]+)/(:any)/(:any)'] = function($controller,$function,$param) {
    return 'site/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function)).'/'.$param;
};

$route['([a-zA-Z]+)/(:any)/(:any)/(:any)'] = function($controller,$function,$param,$param1) {
    return 'site/'.strtolower($controller).'/'.str_replace("-","_",strtolower($function)).'/'.$param.'/'.$param1;
};

完全是动态的。您可以在任何模块中创建大量控制器。如果你想添加更多模块,那么你只需制作另一个路由块,如1或2。

相关问题