CodeIgniter:关于 HMVC 和 Views 的一些疑惑

Posted

技术标签:

【中文标题】CodeIgniter:关于 HMVC 和 Views 的一些疑惑【英文标题】:CodeIgniter: some doubts about HMVC and Views 【发布时间】:2012-01-29 20:17:09 【问题描述】:

我刚刚发现了 CodeIgniter https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home 的 HMVC 模块化扩展,它似乎非常适合我的需求,但我有一些问题。

假设我有两个控制器:

Site 是主控制器,用于显示网站的页面,可以调用用户控制器的方法,例如显示表单 用户控制器用于验证用户身份,显示登录/注册表格...

现在我有这些问题:

    如果用户直接访问 User 控制器 (mysite.com/user/method) 我想显示一个完整的页面,而如果我从在站点控制器中我只想显示一个表单(例如),这可能吗? 查看从另一个模块加载的模块会发生什么情况:视图是自动显示还是我需要手动显示?视图的行为如何?

【问题讨论】:

【参考方案1】:

如果你的方法是通过 Modules::run() 调用的

还有第三个可选参数可以让你改变 函数,以便它将数据作为字符串返回而不是发送 它到您的浏览器。

例如:

//put underscore in front to prevent uri access to this method.
public function _module1()

     $this->load->view('partial_view', array('some data'=>'some data'), TRUE)

在您的站点视图中轻松调用它

Modules::run('User/_module1')
// should show whatever is in partial_view ie: a form

//an alternative is to pass in any params if the method requires them
Modules::run('User/_module1', $param)

【讨论】:

no modules::run 正在调用您的类/方法,而不是相反。通过将第三个参数添加到视图加载器中,它将以字符串形式检索视图。所以没有输出呈现给浏览器,它现在可以像包含一样使用

以上是关于CodeIgniter:关于 HMVC 和 Views 的一些疑惑的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 模块化扩展 HMVC 不会加载视图

使用 nginx 为 hmvc 结构设置 Codeigniter

插入批处理,如果在Codeigniter 3 HMVC中有重复的密钥更新

带有 Wiredesignz HMVC 路由的 CodeIgniter

CodeIgniter HMVC object_to_array() 错误

Codeigniter 3 + HMVC 模块(cgi/fastcgi 与 apache 处理程序)