【问题标题】:Codeigniter HVMC modular seperation extension URL rewrite / routingCodeigniter HMVC 模块分离扩展 URL 重写/路由
【发布时间】:2010-07-31 23:25:57
【问题描述】:

我一直在使用 HVMC 模块化扩展,它工作得很好,但我无法弄清楚如何使用,以及是否可以将 URL 路由与 HVMC 一起使用。

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

谁能告诉我这是否可以通过 HVMC 模块化扩展来完成?

非常感谢任何帮助!

【问题讨论】:

  • 嗨 Thrice801,您找到实现此目的的方法了吗??

标签: codeigniter hmvc


【解决方案1】:

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

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

【讨论】:

  • 嗨 simnom 你找到了从 uri 字符串中删除站点前缀的进一步解决方案吗???
【解决方案2】:

我也在 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2013-05-06
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多