在一个页面上合并多个控制器,而无需从一个控制器加载控制器


Combining multiple controllers on one page, without loading controllers from a controller

我试图创建一个页面,显示某些部件/包括依赖于用户权限。我是CodeIgniter和MVC的新手。

我有日历。这有一个控制器,模型和视图,它需要被包含在其他页面。我希望这个日历和其他一些类似的"小部件"显示在一个页面上。此页面当前有控制器和视图。

我知道我不应该从另一个控制器加载一个控制器,但我找不到一个绕过它的方法。你能从一个助手中加载多个控制器吗,或者我需要某种形式的模板吗?

谢谢,

内政大臣Jacqui

这听起来像你正在寻找CodeIgniter的模块化扩展。这允许您将应用程序分解为可以相互调用的模块。在您的示例中,您将拥有一个日历模块,您可以从其他模块调用该模块。

你可能要找的是叫做Layouts的东西。Codeigniter没有这种现成的功能,但布局基本上是跨多个操作委托(前端控制器)请求。每个动作都有它自己的工作,并有它自己的视图。

布局会注意把这些放到一个输出中。

这个方法也很小心,你不会从一个控制器调用另一个控制器,所以你把不属于彼此的代码分开,否则会因为一次做太多而弄乱。

这个讨论可能对你很有趣:Codeigniter布局?, Codeigniter FAQ也有更多关于它的内容,更具体地说,wiki中每个页面的页眉、页脚和菜单