【问题标题】:Combining multiple controllers on one page, without loading controllers from a controller在一个页面上组合多个控制器,无需从控制器加载控制器
【发布时间】:2011-10-14 08:52:23
【问题描述】:

我正在尝试创建一个页面,该页面根据用户权限显示某些小部件/包含。我对 CodeIgniter 和 MVC 很陌生。

示例。 我有一个日历。这有一个控制器、模型和视图,它需要包含在其他页面中。 我希望将这个日历和许多其他类似的“小部件”显示在一个页面上。此页面当前有一个控制器和视图。

我知道我不应该从另一个控制器加载一个控制器,但看不到绕过它的方法。 您可以从帮助程序加载多个控制器,还是我需要某种形式的模板?

谢谢,

杰奎

【问题讨论】:

    标签: php codeigniter controller helper hmvc


    【解决方案1】:

    听起来你在寻找Modular Extensions for CodeIgniter。这允许您将应用程序分解为可以相互调用的模块。在您的情况下,您将拥有一个可以从其他模块调用的日历模块。

    【讨论】:

    • 如果我要使用这种模块化方法,我是否需要将所有东西都模块化。包括例如登录?
    • 对于任何想要使用模块的人来说,net tuts 都有一个很好的教程tutorial
    • @JPickup 不,您不需要将所有内容都模块化。您仍然可以将控制器、模型和视图放在原始 CI 目录中。
    【解决方案2】:

    您可能正在寻找一种叫做 Layouts 的东西。 Codeigniter 没有这种开箱即用的功能,但布局基本上是跨多个操作委派(前端控制器)请求。每个动作都独立运作,并分配了自己的视图。

    然后布局会小心地将所有这些放在一个输出中。

    此方法还注意不要从另一个控制器调用一个控制器,因此您可以将不属于彼此的代码分开,否则会因为一次执行太多操作而变得混乱。

    此讨论可能对您来说很有趣:Codeigniter layouts?Codeigniter FAQ 也有更多关于它的信息,更具体地说是 wiki 中的Header and footer and menu on every page

    【讨论】:

    • JPickup,这取决于您的需求。我会寻找实际运行控制器的东西(模板库没有),检查这个:codeigniter.com/wiki/… 或查看钩子codeigniter.com/wiki/Chuck_Son%27s_take - 论坛讨论显示了很多不同的概念,请先阅读以做出更好的为自己的问题做出决定。
    • @JPickup:是的,阅读论坛讨论,也刚刚编辑了我的最后一条评论。当你做出决定时,写下它,这样你就可以与他人分享你的经验。
    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2011-07-04
    相关资源
    最近更新 更多