2010-07-31 65 views
0

我一直使用HVMC模块化扩展,它的工作很好,但我无法弄清楚如何使用,以及是否有可能使用HVMC的URL路由。Codeigniter HVMC模块化分离扩展URL重写/路由

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

任何人都可以告诉我,如果这可以用HVMC模块化扩展完成吗?

任何帮助非常感谢!

+0

嗨Thrice801你找到了一种方法来实现这个? – hairynuggets 2011-11-24 18:52:05

回答

1

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

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

嗨simnom你有没有找到一个进一步的解决方案,从uri字符串中删除站点前缀? – hairynuggets 2011-11-24 17:57:04

0

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

我在这里定义了两种类型的模块,一个是站点,另一个是admin。

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.