【问题标题】:Codeigniter Inter Controller CommunicationCodeigniter 控制器间通信
【发布时间】:2011-12-07 11:54:04
【问题描述】:

我是 MVC 的新手,CodeIginter。它不是让事情变得简单,而是需要为一个简单的应用程序编写大量代码。这些可能正在发生,因为我是新人。所以我对这件事没有什么困惑。感谢您提供任何帮助。
1)方法写在一个控制器中,不能在另一个控制器类中访问。我必须为相同的功能编写一个新函数。

2)在none mvc面板中创建网站管理面板(后端),我们通常在一个新文件夹中创建它。这在 CodeIgniter 中是否可行?如果不是管理员(后端)呢??

【问题讨论】:

    标签: model-view-controller codeigniter controller


    【解决方案1】:

    1) 在一个控制器中编写的方法不能在另一个控制器类中访问。我必须为相同的功能编写一个新函数。

    功能是什么?也许您应该编写一个库/帮助程序,控制器的逻辑应该仅限于请求流或其他东西,但不要太复杂。为此,请将功能放入模型中,或者如果更通用,则放入库/帮助器中。

    2)在none mvc面板中创建网站管理面板(后端),我们通常在一个新文件夹中创建它。这在 CodeIgniter 中是否可行?如果不是管理员(后端)呢??

    没看懂,能详细点吗?

    【讨论】:

    • 感谢您的回复。管理面板是指通过访问数据库等修改内容等的网站部分。例如我的网站是“mysite.com”,amdin 面板是“mysite.com/admin”
    • 这种情况几乎一直在发生,它应该由另一个控制器来处理,就像其他控制器一样。哪一部分让你感到困惑?
    【解决方案2】:

    让我们试着消除你对此的一些疑虑。

    1) 从另一个控制器调用一个控制器的方法是不可能的,顺便说一句。

    控制器应该从 URL 中获取操作(由 CI 路由到任务的正确控制器),并基于此决定需要调用哪个模型和模型的方法来详细说明请求的数据。

    然后,模型将这个精化的结果交还给控制器,控制器反过来决定将这个结果传递给哪个视图。

    最终,视图的结构是为了获取这些数据并显示它们。

    所以,如您所见,从另一个控制器调用一个控制器的方法是无稽之谈,这就像转到一个页面并找到另一个页面一样;如果你想将请求传递给另一个控制器......好吧,有重定向。

    如果您发现自己在一段时间内拥有相同的功能,请三思而后行:

    1. 什么是功能?您是说控制器“存档”中的“显示帖子”和控制器“新闻”中的“显示帖子”之类的东西吗?它们的功能几乎不一样;他们也许可以共享视图或模型,仅此而已。
    2. 对于与 URL 无关但涉及一些进一步详细说明(在模型中这样做可能是错误的)并且在控制器中调用的函数,您可以使用库来代替。想想“form_validation”库,它在控制器的方法中调用,但有自己独特的(和封装的)功能。使用“会话”库或“身份验证”库

    2) 创建管理面板最简单的方法是:创建一个“管理”控制器(然后可以访问 www.mysite.com/index.php/admin),并将所有管理操作放在那里,在它的方法:create_page()、edit_page()、manage_users() 等等。 为了避免人们随意访问它,您需要构建一个身份验证系统,在其最简单和最简单的结构中,它可能是检查是否设置了会话(可能是在 __construct() 时间完成的检查)。

    但是您可以找到已经制作好的 Auth 库,例如 Ion Auth 或 Tank Auth(据我所知,这两个是最受欢迎的)

    希望现在情况更清楚了。如果您对模块化 HMVC 方法感兴趣,另请参阅 Interstellar_Coder 在此答案中的评论。

    【讨论】:

    • 实际上使用新的 HMVC 模式,理论上您可以从一个控制器调用另一个控制器方法。这似乎是一种增长趋势,有助于进一步分离代码,在内部模拟请求并返回视图的输出,并可与当前控制器的视图结合使用。尽管在这种特定情况下,我认为 OP 不需要使用这种方法。
    • @Interstellar_Coder 我知道,但我认为 OP 仍然缺少一些基础知识,所以我认为提及 HMVC(这在 CodeIgniter 中也不是原生的)将是进一步的一步,仍然没有必要并且这可能会产生更多的混乱。不过,非常感谢您的补充。
    猜你喜欢
    • 2012-08-10
    • 1970-01-01
    • 2015-03-16
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多