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 的一些疑惑的主要内容,如果未能解决你的问题,请参考以下文章
使用 nginx 为 hmvc 结构设置 Codeigniter
插入批处理,如果在Codeigniter 3 HMVC中有重复的密钥更新
带有 Wiredesignz HMVC 路由的 CodeIgniter