Codeigniter控制器间通信

时间:2011-10-14 05:56:50

标签: model-view-controller codeigniter controller

我是MVC的新手,CodeIginter。它不需要简单易用,而是需要为简单的应用程序编写大量代码。这可能是因为我是新人而发生的。所以我对这件事几乎没有什么困惑。任何形式的帮助表示赞赏 1)方法写在一个控制器中,不能在另一个控制器类中访问。我必须为相同的功能编写一个新函数。

2)要在无mvc面板中创建网站管理面板(后端),我们通常会在新文件夹中创建它。在CodeIgniter中这可能吗?如果不是管理员(后端)??

2 个答案:

答案 0 :(得分:2)

让我们试着澄清一些你对此的怀疑。

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

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

然后,模型将此详细说明的结果交还给控制器,控制器依次决定哪个视图通过了这个结果。

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

所以,正如你所看到的,从另一个控制器调用控制器的方法是无稽之谈,这就像去一个页面而找到另一个控制器;如果你想传递给另一个控制器请求......好吧,那里有重定向。

如果您在几个时刻发现自己具有相同的功能,请三思而后行:

  1. 什么是功能?你的意思是像控制器“档案”中的“显示帖子”和控制器“新闻”中的“显示帖子”中的某些人吗?它们几乎不是同一个功能;他们可以分享观点或模型,但就是这样。
  2. 对于与URL无关的功能,但需要进一步详细说明(在模型中可能会出错)并且仍然在控制器中调用,您可以使用库。想想“form_validation”库,它在控制器的方法中调用,但有自己特有的(和封装的)功能。 Ora“会话”库或“身份验证”库
  3. 2)要创建一个管理面板,最简单的方法是:创建一个“admin”控制器(可访问www.mysite.com/index.php/admin),然后将所有管理操作放在其中方法:create_page(),edit_page(),manage_users()等等。 为了避免人们自由地访问它,你需要建立一个身份验证系统,在其最简单的barabone结构中,可能是对会话设置与否的检查(可能是在__construct()时间完成的检查)。

    但是你可以在那里找到很好的Auth库,例如Ion Auth或Tank Auth(据我所知最受欢迎的2个)

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

答案 1 :(得分:1)

  

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

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

  

2)要在无mvc面板中创建网站管理面板(后端),我们通常会在新文件夹中创建它。在CodeIgniter中这可能吗?如果不是管理员(后端)??

我不明白,你能详细说明一下吗?