2013-05-12 104 views
0

我有HMVC结构从https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvcHMVC笨路由模块控制器功能

模块内容,创建控制器news_event,以及用于功能视图详细视图 结构这样

  • 模块
    • ...
    • ...
    • 内容
      • 控制器
        • ...
        • news_event.php

news_event。PHP

我有3个功能,索引,视图和页面

function index() { $this->pages(); } 

function pages($_pages = 1){ ... } 

function view($_id_uri = false){ ... } 

我已经成功做出

http://example.com/ci_hmvc/content/news_event/

成为

http://example.com/ci_hmvc/news_event/

,但它的错误,当它的负载下一个视图

http://example.com/ci_hmvc/news_event/view/my-var-uri-friendly-here

我得到404错误,但如果我用这个URL调用,成功

http://example.com/ci_hmvc/content/news_event/view/my-var-uri-friendly-here

我的路由代码是

$route['news_event'] = 'content/news_event'; 
$route['news_event/(:any)'] = 'content/news_event/view/$1'; 

怎样的路线,如果我想如果您使用路由文件从模块文件夹内的

http://example.com/ci_hmvc/news_event/view/my-var-uri-friendly-here

或本

http://example.com/ci_hmvc/news_event/my-var-uri-friendly-here

回答

1

访问时,路由名称必须以模块名称开头。

模块/内容/配置/ routes.php文件

$route['default_controller'] = 'content'; 

$route['content/'] = ''; 

你可以在正常的路由文件添加路由

的application/config/routes.php文件

$route['news_event'] = 'content/content/news_event'; 

hmvc背后的想法是不是致电一个模块通过路由方法,而是在系统内部调用模块本身(视图或控制器)

Modules::run('module/controller/method', $args); 
+1

我很尊重URL和系统调用的不同意见。通过URL调用模块直接允许该模块的独立性,作为回报,允许更好的隔离。使用系统迫使你有一些代理模块::运行模块。 – koxon 2014-08-02 21:39:35